2013-03-14 3 views
6

Может ли кто-нибудь объяснить, почему появляется мягкая клавиатура и исчезает, когда это происходит?Почему появляется программная клавиатура Android, когда она появляется?

У меня есть макет с кучей различных элементов управления, в основном EditTexts и Buttons. Когда я впервые показываю эту страницу, EditText в верхней части макета имеет фокус, а мягкая клавиатура закрывает нижние 45% экрана.

Я предположил, что клавиатура была там, потому что EditText имел фокус, поэтому я решил дать кнопке внизу моей страницы фокус, а не через. , ,

butDone.setFocusableInTouchMode(true); 
    bResult = butDone.requestFocus(); 

... сразу после setContentView(). Это работало так же, как при нажатии кнопки. Бобтон получил фокус, а EditText больше не фокусировался, но клавиатура все еще была там. В конце концов я избавился от клавиатуры через

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

, но ясно, что моя теория о том, что EditText имеет фокус, была неправильной. Так может кто-нибудь объяснить «правила» о том, что делает клавиатуру появляться, когда она делает, или ссылку на эти правила? Заранее спасибо!

ответ

0

По умолчанию первые EditText получат фокус, если вы не указали ничего о фокусе в XML-формате макета.

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

+0

Итак, вы говорите, что, хотя я даю фокус кнопке в коде, он игнорирует это, потому что фокус не указан в XML? – user316117

+0

Нет, я просто говорю, что это лучшее решение, чтобы указать, что на XML, а не позволять Android сосредоточиться на первом EditText по умолчанию, а затем программно изменить его. – Edgar

Смежные вопросы