2011-04-27 62 views
4

我有一个布局结构如下:的Android ScaleAnimation不能扩展可点击区域

LinearLayout1
        LinearLayout2
               的EditText

我申请一个ScaleAnimation到LinearLayout1使用LayoutAnimationController,以便层次结构中的所有视图都按相同的数量缩放。

在应用ScaleAnimation后,视图全部按比例缩放,但EditText不再响应落在其原始空间之外的点击。换句话说,EditText的可点击区域看起来并不与可视化表示一起扩展。

有没有解决这个问题的方法,或者我在调用ScaleAnimation之前或之后失踪?

回答

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); 
} 
+1

我面临着同样的情况......你什么时候调用这个scaledHitTest? – user1201239 2012-04-10 08:04:36