1

我的 Android 应用程序本质上是一个实现“SurfaceHolder.Callback”接口的 Surface View。我或多或少地实时显示二维数据图。此外,我添加了一个文本视图来显示叠加在表面视图上的一些附加数据。

我目前的问题是 Surface View 处理各种手势和触摸,但 Text View 似乎正在拦截触摸。

如何将事件从文本视图传递到底层(字面意思是在相对布局中)表面视图进行处理?

谢谢,
R。

4

1 回答 1

0

我希望不必这样做(回答我自己的问题),但这是我认为我从一些关于 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 以指示事件应该被消耗(由操作系统,看起来),否则为假。”

于 2012-09-28T12:59:02.437 回答