Показать программную клавиатуру без EditText

Моя цель – показать / скрыть экранную программную клавиатуру на каком-либо событии и перехватить вход с этой клавиатуры.

Я узнал, что мягкую клавиатуру можно показать для некоторого потокового класса View, но мне не нужно визуальное представление виджета редактирования текста на экране, просто возможность программно отображать скрытую мягкую клавиатуру с перехватом входных данных.

Каков наилучший способ достичь этого?

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

Как отметил Викрам, это способ показать мягкий вход:

InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

НО вы также должны настроить свое представление как настраиваемое и фокусируемое в режиме касания:

 myView.setFocusable(true); myView.setFocusableInTouchMode(true); 

Или, по вашему мнению, XML:

 android:focusable = "true" android:focusableInTouchMode = "true" 

Вы можете принудительно отобразить Softkeyboard, используя:

 InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); im.showSoftInput(myView, InputMethodManager.SHOW_FORCED); 

И скрыть:

 ((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0); 

Фактически, вы always можете отображать мягкий ввод клавиатуры из манифеста. Добавьте эту строку в каждое действие, которое вы хотите отобразить на клавиатуре:

 android:windowSoftInputMode="stateAlwaysVisible" 

Мягкая клавиатура будет отображаться независимо от того, нет ли в представлении edittext. пример:

 <activity android:name=".ChatActivity" android:windowSoftInputMode="stateAlwaysVisible"> </activity>