Показывать программную клавиатуру в ландшафтном режиме
этот код не работает в ландшафтном режиме:
EditText destinationSearch = (EditText) findViewById(R.id.destinationSearch);
destinationSearch.requestFocus (); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
ИММ.showSoftInput (destinationSearch, InputMethodManager.SHOW_IMPLICIT);
есть ли решение для отображения экранной клавиатуры в альбомном режиме ?
3 ответов
вам нужно использовать show forced
InputMethodManager imm;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED);
причина в том, что ландшафтный режим Чаще всего помещает мягкую клавиатуру в новое полноэкранное окно. Как сказал Баких, сила будет работать, но полноэкранное окно имеет больше эффектов, и поэтому SHOW_FORCED.
Я предпочитаю добавлять
<item name="android:imeOptions">flagNoFullscreen</item>
в мой EditTextStyle, чтобы я всегда мог поймать onGlobalLayout () и так далее. Теперь вы можете использовать SHOW_IMPLICIT. Просто убедитесь, что ваш пользовательский интерфейс выглядит хорошо в такой небольшой области и удалить автозамены, если не требуется.
EditText editText = (EditText)findViewById(R.id.editText);
editText.setFocusableInTouchMode(false);
final Context context = this;
editText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.requestFocusFromTouch();
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);
}
});