2011-04-27 61 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