如何在线性布局中一次添加OnTouchListener和OnClickListener?

时间:2015-06-24 07:27:19

标签: android layout onclicklistener ontouchlistener

如何在OnTouchListener中一次添加活动OnclickListenerLinearLayout

这是我的代码但不起作用

final LinearLayout llTimeTable=(LinearLayout) findViewById(R.id.llSehriIftar);
    llTimeTable.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, Ramadandate.class);
            startActivity(intent);

        }
    });
    llTimeTable.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:

            llTimeTable.setBackgroundColor(Color.rgb(51, 51, 255));
                break;

            case MotionEvent.ACTION_UP:

                // set color back to default
                llTimeTable.setBackgroundColor(Color.rgb(76, 106, 225));

                break;
            }
            return true;
        }
    });

但是,当我只使用OnclickListener时,它可以正常工作,当我只使用onTouch方法时,它可以正常工作,但两者同时都无效。

2 个答案:

答案 0 :(得分:8)

由于Touch事件更为通用,因此首先调用它,然后onClick被触发,但是,因为你的onTouch返回true,所以事件被消耗并且永远不会到达onClick

只需将 onTouch 更改为 return false ,即可调用您的onClick。

答案 1 :(得分:3)

 llTimeTable.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

        //Your code.......
            return false;
        }
    });

如果您返回true,请确保在TouchListener中返回false,然后该事件将不会传递给其他侦听器。