我的布局结构如下:
LinearLayout1
LinearLayout2
的EditText
我正在使用LayoutAnimationController将ScaleAnimation应用于LinearLayout1,以便层次结构中的所有视图都按相同的量进行缩放。
应用ScaleAnimation后,视图都会正确缩放,但EditText不再响应最初占用的空间之外的点击。换句话说,EditText的可点击区域似乎不会与可视化表示一起缩放。
在调用ScaleAnimation之前或之后,是否有解决此问题的方法或我遗漏了?
答案 0 :(得分:3)
如果其他人正在寻找这个问题的答案,这是我提出的解决方案。我在LinearLayout1中捕获点击事件,并使用getHitRect在视图层次结构中进行手动递归命中测试,并将比例因子应用于接收的维度。
以下是我对视图的点击测试的实现。
public boolean scaledHitTest(float zoomScale, int x, int y) {
Rect rect = new Rect();
getHitRect(rect);
rect.top = (int) (rect.top * zoomScale);
rect.bottom = (int) (rect.bottom * zoomScale);
rect.left = (int) (rect.left * zoomScale);
rect.right = (int) (rect.right * zoomScale);
return rect.contains(x, y);
}