【问题标题】:How to Add OnTouchListener and OnClickListener at a time in Linear Layout?如何在线性布局中一次添加 OnTouchListener 和 OnClickListener?
【发布时间】:2015-06-24 07:27:18
【问题描述】:

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

【问题讨论】:

标签: android layout onclicklistener ontouchlistener


【解决方案1】:

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

只需将 onTouch 更改为 return false,您的 onClick 就会被调用。

【讨论】:

  • 没问题!很高兴我帮助了
  • 谢谢 :) stackoverflow 的新用户,我很感激,因为它可以帮助我访问网站上的更多功能
【解决方案2】:
 llTimeTable.setOnTouchListener(new View.OnTouchListener() {

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多