0

我有一个CustomLayout扩展TableLayout并包含LinearLayout行子级的视图,每个子级都包含一个RelativeLayout单元格(每个单独的单元格都有一个OnClickListener)。CustomLayout也有一个礼物,ScaleGestureDetector并支持在 X/Y 轴上滚动/拖动。当缩放因子为 1(无缩放)时,一切都很好。

问题是每个单元格似乎OnClickListener都没有考虑到缩放因子CustomLayout,因此它是自己的单元格缩放比例。因此,如果缩放为 2 倍并且您单击现在更大的单元格,您实际上是单击了之前缩放级别的另一个较小单元格的触摸目标。

我不知道这是否是设计使然(我试图找到一些关于这个问题的文档,但没有找到任何东西)。关于这个问题的任何输入/想法?我知道总是有可能通过监听触摸事件并将触摸事件位置映射到现在放大/更大的单元格来ClickListener手动实现。CustomLayout但我想知道是否可以使用默认值OnClickListener来获得更简单、更清洁的方法。

4

1 回答 1

0

没关系。显然我是在缩放/平移画布而不是视图,所以我想布局子级无法考虑画布已经移动是有道理的。

因此,要么缩放/平移整个视图,不仅是它的画布(但这会导致大量动画和丢帧/抖动)或只缩放/平移画布(这提供了改进的性能)并管理所有触摸事件,例如手动点击。</p>

于 2016-08-30T08:23:10.463 回答