Android ScaleAnimation не масштабирует интерактивную область

У меня есть макет, структурированный следующим образом:

LinearLayout1
LinearLayout2
EditText

Я применяю ScaleAnimation к LinearLayout1 с помощью LayoutAnimationController, чтобы все представления в иерархии масштабировались на одинаковую величину.

После применения ScaleAnimation все представления масштабируются правильно, но EditText больше не реагирует на щелчки, выходящие за пределы занимаемого им изначально пространства. Другими словами, кажется, что интерактивная область для EditText не масштабируется вместе с визуальным представлением.

Есть ли решение этой проблемы или мне не хватает до или после вызова ScaleAnimation?


person gyoda    schedule 27.04.2011    source источник


Ответы (1)


Если кто-то еще ищет ответ на эту проблему, вот решение, которое я придумал. Я фиксирую события кликов в 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);
}
person gyoda    schedule 08.06.2011
comment
Я сталкиваюсь с тем же сценарием... когда вы вызываете этот scaledHitTest? - person user1169079; 10.04.2012