Установить начальный фокус в приложении для Android - PullRequest
82 голосов
/ 30 апреля 2010

В моем приложении для Android он автоматически фокусирует первую кнопку в моей раскладке, выделяя ее оранжевым контуром. Как я могу установить начальный фокус предпочтительно в XML, и это может быть установлено в ничто?

Ответы [ 7 ]

154 голосов
/ 30 апреля 2010

Вы можете использовать тег requestFocus:

<Button ...>
  <requestFocus />
</Button>

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

59 голосов
/ 16 ноября 2011

@ Кто-то где-то, я пробовал все вышеперечисленное безрезультатно. Исправление, которое я нашел от http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android. По сути, вам нужно создать невидимый макет чуть выше проблемной кнопки:

<LinearLayout android:focusable="true"
              android:focusableInTouchMode="true" 
              android:layout_width="0px"
              android:layout_height="0px" >
    <requestFocus />
</LinearLayout>
25 голосов
/ 27 апреля 2011

Установите для :focusable и :focusableInTouchMode значение true и вызовите requestFocus. Это делает трюк.

22 голосов
/ 31 июля 2013

Я нашел, что это работает лучше всего для меня.

В AndroidManifest.xml <activity> element добавить android:windowSoftInputMode="stateHidden"

Это всегда скрывает клавиатуру при входе в занятие.

11 голосов
/ 02 июня 2012

Я просто добавляю эту строку кода в onCreate():

this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Проблема решена.

7 голосов
/ 31 января 2012

Используйте код ниже,

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();

это должно работать.

3 голосов
/ 27 сентября 2011

@ Кто-то где-то я использовал это, чтобы очистить фокус:

editText.clearFocus();

и это помогает

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