android - 如何让多个监听器在 Android 中处理相同的 OnTouch 事件?

标签 android android-view android-event

我有两个实现 OnTouchListener 的不同对象。

其中一个,使用事件数据修改一些内部数据,另一个更新UI。

问题是,如果我将它们都设置为监听同一个 View ,则只有其中一个处理 OnTouch 事件,而不会调用另一个的 OnTouch 函数。

我读到,如果 OnTouch 函数返回 true,则意味着事件已被处理,但如果我返回 False,则它们的行为不正常。

所以,问题是:

如何将两个或多个监听器对象设置为来自 View 的相同 OnTouch 事件,并允许它们全部接收所有这些事件?

最佳答案

只需让一个监听器为两个对象调用一个方法:

Object uiModifier;
Object internalDataModifier;
//ensure these Objects are initialized

myView.setOnClickListener(new OnTouchListener() {
    @Override
    public boolean onTouchListener(View v, MotionEvent event)
    {
        internalDataModifier.handleTouch(v, event);
        uiModifier.handleTouch(v, event);
        return true;
    }

}

并确保 internalDataModifieruiModifier 都有一个 handleTouch(View, MotionEvent) 方法。

关于android - 如何让多个监听器在 Android 中处理相同的 OnTouch 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111999/

相关文章:

android - 使用 Android 接收 onTouch 和 onClick 事件

android - 在 eclipse 中运行对 android 没有响应

java - 如何 "export"另一个类中的上下文?

android - 为什么 setAlpha() 在 RecyclerViews 中不起作用?

Android:将 Canvas 绘制到 View

android - 什么 Android 事件在 Activity 被销毁之前只调用一次?

android - 如何删除 Android 上 ListView 之间的线条?

java - Android TextView 没有完全更新

android.widget.LinearLayout$LayoutParams 类错误

android - 错误 ACTION_INSERT android 2.3