Android ScaleAnimation不会缩放可点击区域

时间:2011-04-27 17:41:00

标签: android android-edittext

我的布局结构如下:

LinearLayout1
LinearLayout2
的EditText

我正在使用LayoutAnimationController将ScaleAnimation应用于LinearLayout1,以便层次结构中的所有视图都按相同的量进行缩放。

应用ScaleAnimation后,视图都会正确缩放,但EditText不再响应最初占用的空间之外的点击。换句话说,EditText的可点击区域似乎不会与可视化表示一起缩放。

在调用ScaleAnimation之前或之后,是否有解决此问题的方法或我遗漏了?

1 个答案:

答案 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);
}