我的 Android 应用程序本质上是一个实现“SurfaceHolder.Callback”接口的 Surface View。我或多或少地实时显示二维数据图。此外,我添加了一个文本视图来显示叠加在表面视图上的一些附加数据。
我目前的问题是 Surface View 处理各种手势和触摸,但 Text View 似乎正在拦截触摸。
如何将事件从文本视图传递到底层(字面意思是在相对布局中)表面视图进行处理?
谢谢,
R。
我的 Android 应用程序本质上是一个实现“SurfaceHolder.Callback”接口的 Surface View。我或多或少地实时显示二维数据图。此外,我添加了一个文本视图来显示叠加在表面视图上的一些附加数据。
我目前的问题是 Surface View 处理各种手势和触摸,但 Text View 似乎正在拦截触摸。
如何将事件从文本视图传递到底层(字面意思是在相对布局中)表面视图进行处理?
谢谢,
R。
我希望不必这样做(回答我自己的问题),但这是我认为我从一些关于 SO 的帖子中了解到的:
在 Android 相对布局中,“顶部”视图首先获取事件。就我而言,Surface View 顶部的 Text View 不应该对任何东西做任何事情,因此有必要将所有事件“向下”传递到堆栈中。我做到了这一点:
textView.setOnTouchListener (new View.OnTouchListener()
{
@Override
public boolean onTouch (View v, MotionEvent event)
{
return false;
}
});
令人讨厌的部分(在我看来)是 Android 帮助文本的欺骗性质,它说:
“返回 - 如果侦听器已经消费了事件,则返回 true,否则返回 false。”
在我看来(再次,我的观点),这件事的基调是颠倒了因果关系。我想这是在吹毛求疵,但文本可能应该说“返回 TRUE 以指示事件应该被消耗(由操作系统,看起来),否则为假。”