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

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

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

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

программная клавиатура для какого-либо решения в режиме ландшафта?1009 *

Ответы [ 3 ]

11 голосов
/ 25 января 2011

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

InputMethodManager imm;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED);
1 голос
/ 20 февраля 2015

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

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

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

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

0 голосов
/ 06 июня 2015
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);

    } 
}); 
...