Фокус случайным образом прыгает при прокрутке - PullRequest
5 голосов
/ 13 июля 2011

У меня есть активность со многими EditText элементами управления и флажками рядом с ними. По умолчанию большинство EditTexts отключены.

Когда я открываю упражнение, какой-то случайный элемент управления EditText получает фокус (рамка вокруг него), и если вы нажмете на него, появится экранная клавиатура, даже если EditText отключен, и текст не появится, когда вы нажмите экранные клавиши.

Кроме того, весь мой макет обернут в ScrollView. Когда вы прокручиваете, некоторые случайные EditText s получают фокус. Это может быть самый низкий видимый или самый высокий видимый, иногда один посередине, иногда один за пределами видимой области.

Поскольку случайный элемент макета получает фокус, при его открытии произвольно прокручивается действие, что довольно раздражает.

Я думаю, это ошибка Android, но есть ли обходной путь?

Остановить EditText от получения фокуса при запуске Activity обрабатывает ситуацию только с 1 EditText, для которой вы можете сказать, чтобы потерять фокус, чтобы фиктивный элемент мог его получить. В моем случае фиктивный элемент не получает фокус, как в onResume, так и в onCreate, с обоими android:focusable="true" android:focusableInTouchMode="true"

Должен ли я проверить все элементы управления EditText (их 12) и сказать им потерять фокус? Что с прокруткой, потому что кажется, что фокус случайно скачет.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Из-за реализации метода fling в ScrollView - достаточно переопределить findFocus(), чтобы он возвратил this, чтобы не допустить скачка фокуса при прокрутке.

@Override
public View findFocus() {
    return this;
}
3 голосов
/ 14 сентября 2011

Это не прокрутка, которая случайным образом фокусирует EditText.Это когда scrollview обрабатывает событие броска.Если вы перезапишете метод fling, случайных изменений фокуса не будет.

Тогда, если вы хотите вернуть функцию fling, вам нужно написать свой собственный метод fling.Здесь есть код, который вы можете скопировать с:

Плавная прокрутка в Android

...