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

Этот код, похоже, не работает в ландшафтном режиме:

EditText destinationSearch = (EditText) findViewById(R.id.destinationSearch); 

destinationSearch.requestFocus (); InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE);
imm.showSoftInput (destinationSearch, InputMethodManager.SHOW_IMPLICIT);

Есть какое-то решение, чтобы показать мягкую клавиатуру в альбомном режиме?


person andreea    schedule 21.01.2011    source источник
comment
Кажется, работает с флагом SHOW_FORCE: D   -  person andreea    schedule 21.01.2011


Ответы (4)


Вам нужно использовать принудительное шоу

InputMethodManager imm;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED);
person Bakih    schedule 25.01.2011
comment
Зачем вам нужно toggleSoftInput с HIDE_IMPLICIT_ONLY? - person IgorGanapolsky; 20.04.2012

Причина в том, что в ландшафтном режиме мягкая клавиатура чаще всего помещается в новое полноэкранное окно. Как сказал Баких, форсировка будет работать, но полноэкранное окно имеет больше эффектов, как и SHOW_FORCED.

Я предпочитаю добавлять

    <item name="android:imeOptions">flagNoFullscreen</item>

в мой EditTextStyle, чтобы я всегда мог поймать onGlobalLayout () и так далее. Теперь вы можете использовать SHOW_IMPLICIT. Просто убедитесь, что ваш пользовательский интерфейс хорошо выглядит на такой небольшой площади, и удалите автозамену, если она не нужна.

person Adam Wigren    schedule 19.02.2015

Более простые изменения XML отвечают https://stackoverflow.com/a/13179855/1029110

 <EditText   
        android:id="@+id/txtInLandscapeVw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="flagNoExtractUi">   
        <requestFocus />
    </EditText>

Так что добавьте

android: imeOptions = flagNoExtractUi

и

‹requestFocus /›

person Rahul Kahale    schedule 15.10.2020

person    schedule
comment
Возможно, вам будет полезно добавить пояснение к своему ответу, чтобы читатели могли понять, почему ваш ответ лучший, а не просто опубликовать код. Вы можете дополнить свой ответ, нажав кнопку edit. - person Brian Tompsett - 汤莱恩; 06.06.2015