我有一个CustomLayout
视图扩展TableLayout
并包含LinearLayout
行子项,每个子项都包含一个RelativeLayout
单元格(每个单元格都有一个 { {1}} )。 OnClickListener
还有一个CustomLayout
,支持在X / Y轴上滚动/拖动。当比例因子为1(无缩放)时,一切都很好。
问题是每个单元格的ScaleGestureDetector
似乎没有考虑OnClickListener
的缩放因子,以及随后的单元缩放。因此,如果缩放是2倍并且您单击现在更大的单元格,则实际上您点击了上一个缩放级别中另一个较小单元格的触摸目标。
我不知道这是不是设计或不是(我试图找到一些关于这个问题的文档,但没有找到任何东西)。关于此问题的任何输入/想法?我知道通过聆听CustomLayout
触摸事件并将触摸事件位置映射到现在放大/更大的单元格,总是有可能手动实现ClickListener
。但我想知道是否可以使用默认的CustomLayout
来实现更简单,更清洁的方法。
答案 0 :(得分:0)
没关系。显然我正在缩放/翻译画布而不是视图,所以我想布局儿童无法考虑画布已经移动了。
因此,要么缩放/翻译整个视图,不仅要调整它的画布(但这会导致大量动画和丢帧/急动)或仅缩放/翻译画布(这会提高性能)并管理所有触摸事件,例如点击,手动。