【问题标题】:How to extend a view's touch area如何扩展视图的触摸区域
【发布时间】:2012-03-28 21:35:45
【问题描述】:

我有一个垂直的LinearLayout。它应充当快速跳杆。所以宽度非常小,高度几乎与整个屏幕高度匹配。当我触摸它并在里面移动时,一切都很好。这意味着,我的onTouchEvent() 被调用,我可以获取(并跟踪)手指的位置。但由于该栏不是很宽,用户很容易偏离该视图。因此,即使在视图之外,也有必要让用户继续移动。事实上,就像 ListView 一样。

我不知道为什么即使在ListView 之外也会调用ListViewonTouchEvent(),但对于我的LinearLayout 则不会。我将其追溯到 dispatchTouchEvent()。这里的情况是一样的,总是为ListView 调用方法(即使在外面),但在LinearLayout 的情况下却不是(在外面移动时)。

如果有人能给我提示,我会很高兴。非常感谢!

伯纳德

【问题讨论】:

标签: android touch extend touch-event


【解决方案1】:

您可以使用 Android 的 TouchDelegate 功能。它支持单个视图的更大触摸区域。这是一个例子:https://stackoverflow.com/a/1343796/636579

【讨论】:

  • 是的,我已经看过那篇文章,但据我所知,只能将其扩展到下一个父母的大小。这意味着,为了获得全屏高度,必须评估整个视图树。我无法弄清楚 ListView 是如何做到这一点的。
【解决方案2】:

我认为您应该尝试从各个方面增加视图的填充,以便当用户在填充区域的视图附近单击时,将调用 ontouch 或 onClick 方法

android:padding="10dp"

【讨论】: