Как убрать фокус, не устанавливая фокус на другой элемент управления? - PullRequest
80 голосов
/ 25 мая 2011

Мне нравится, что мои интерфейсы интуитивно понятны; каждый экран должен естественно и ненавязчиво вести пользователя к следующему шагу в приложении. За исключением этого, я стараюсь сделать вещи как можно более запутанными и запутанными.

Шучу: -)

У меня есть три TableRow с, каждый из которых содержит только для чтения и не фокусируемый элемент управления EditText, а затем кнопку справа от него. Каждая кнопка запускает одно и то же действие, но с другим аргументом. Пользователь делает выбор там, и подэтап завершается, заполняя соответствующее EditText выбранным пользователем.

Это классический механизм каскадных значений; каждый выбор сужает доступные параметры для следующего выбора и т. д. Таким образом, я отключаю оба элемента управления в каждой из следующих строк, пока EditText в текущей строке не содержит значение.

Мне нужно сделать одну из двух вещей в следующем порядке:

  1. При нажатии кнопки немедленно снимите фокус, не устанавливая фокус на другую кнопку
  2. Установить фокус на первую кнопку, когда начинается действие

Проблема проявляется после возврата подэтапа; кнопка, на которую нажали, сохраняет фокус.

Re: # 1 выше - Кажется, нет removeFocus() метода или чего-то подобного

Re: # 2 выше - я могу использовать requestFocus() для установки фокуса на кнопку в следующей строке, и это работает после возврата подэтапа, но по какой-то причине он не работает в родительском действии onCreate().

Мне нужна согласованность пользовательского интерфейса в любом направлении - либо кнопки не имеют фокуса после завершения подоперации, либо каждая кнопка получает фокус в зависимости от своего места в логическом потоке, включая самую первую (и единственную) активную кнопку перед выбор.

Ответы [ 11 ]

0 голосов
/ 18 августа 2018
android:focusableInTouchMode="true"
android:focusable="true"
android:clickable="true"

Добавьте их в свою ViewGroup, которая включает ваш EditTextView.Это правильно работает с моим макетом ограничения.Надеюсь, что эта помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...