Скрыть софт-клавиатуру на активности без каких-либо операций
У меня есть представление с вкладками с одним действием на вкладку, и когда я переключаюсь с первой вкладки, которая имеет TextView, на вторую вкладку, которая показывает только интерактивный список, программная клавиатура все еще там. Я хочу, чтобы это ушло, поэтому я попробовал это:
public static void hideSoftKeyboard (Activity activity, View view) {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
но это не работает, потому что нет соответствующего представления для представления, так как нет представления на экране, который принимает ввод с клавиатуры. Любые предложения о том, как решить эту проблему?
6 ответов
Попробуйте это в 3-й строке вашего кода:
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
Попробуйте ответ от Джо: не позволяйте EditText получить фокус при запуске Activity
Поместите это в манифест для вашей деятельности:android:windowSoftInputMode="stateHidden"
Это общий вопрос, и приятно знать, что фреймворк на самом деле справляется с этим очень хорошо.
Вы также можете попробовать
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0 );
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
У меня была похожая проблема при попытке скрыть клавиатуру во время воспроизведения анимации перехода.
Это сработало для меня:
imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(), 0)
Этот метод может помочь вам скрыть клавиатуру в любом случае. Это работает нормально для меня
public void hideKeyboard(Activity activity, View view) {
if (activity != null ) {
if(view != null)
{
try {
InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
} catch (Exception e) {
e.printStackTrace();
}
}else
{
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
}
}