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

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

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

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

Ответ 1

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

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

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"

Ответ 2

Вы можете принудительно отобразить 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);

Ответ 3

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

android:windowSoftInputMode="stateAlwaysVisible"

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

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

</activity>