Показать программную клавиатуру без 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>