Android ScaleAnimation не масштабирует кликабельную область - PullRequest
4 голосов
/ 27 апреля 2011

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

LinearLayout1LinearLayout2EditText

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

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

Есть ли решение этой проблемы, или я пропускаю до или после вызова ScaleAnimation?

1 Ответ

3 голосов
/ 08 июня 2011

Если кто-то еще ищет ответ на эту проблему, вот решение, которое я нашел.Я фиксирую события щелчка в 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...