繁体   English   中英

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

[英]How to Add OnTouchListener and OnClickListener at a time in Linear Layout?

如何在LinearLayout一次添加事件OnTouchListenerOnclickListener

这是我的代码,但不起作用

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方法时,它可以工作,但两者同时不起作用。

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

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

 llTimeTable.setOnTouchListener(new View.OnTouchListener() {

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM