2011-04-27 2 views
4

을 확장하지 않습니다 LinearLayout1 LayoutAnimationController를 사용하여 계층 구조의 모든 뷰가 같은 크기로 조정됩니다.안드로이드 ScaleAnimation은 내가 레이아웃 구조화 한 클릭 가능한 영역

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

관련 문제