Как убрать фокус без установки фокуса на другой элемент управления?

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

Шучу: -)

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

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

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

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

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

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

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

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

88
задан InteXX 1 August 2018 в 18:25
поделиться