Мне нравится, что мои интерфейсы интуитивно понятны; каждый экран должен естественно и ненавязчиво вести пользователя к следующему шагу в приложении. За исключением этого, я стараюсь сделать вещи как можно более запутанными и запутанными.
Шучу: -)
У меня есть три TableRow
с, каждый из которых содержит только для чтения и не фокусируемый элемент управления EditText, а затем кнопку справа от него. Каждая кнопка запускает одно и то же действие, но с другим аргументом. Пользователь делает выбор там, и подэтап завершается, заполняя соответствующее EditText
выбранным пользователем.
Это классический механизм каскадных значений; каждый выбор сужает доступные параметры для следующего выбора и т. д. Таким образом, я отключаю оба элемента управления в каждой из следующих строк, пока EditText в текущей строке не содержит значение.
Мне нужно сделать одну из двух вещей в следующем порядке:
- При нажатии кнопки немедленно снимите фокус, не устанавливая фокус на другую кнопку
- Установить фокус на первую кнопку, когда начинается действие
Проблема проявляется после возврата подэтапа; кнопка, на которую нажали, сохраняет фокус.
Re: # 1 выше - Кажется, нет removeFocus()
метода или чего-то подобного
Re: # 2 выше - я могу использовать requestFocus()
для установки фокуса на кнопку в следующей строке, и это работает после возврата подэтапа, но по какой-то причине он не работает в родительском действии onCreate()
.
Мне нужна согласованность пользовательского интерфейса в любом направлении - либо кнопки не имеют фокуса после завершения подоперации, либо каждая кнопка получает фокус в зависимости от своего места в логическом потоке, включая самую первую (и единственную) активную кнопку перед выбор.