2015-03-26 1 views
0

Я использую FrameLayout, чтобы показать EditText и ListView (с флажками) поочередно. При показе EditText я хотел бы отобразить мягкую клавиатуру. И, показывая ListView, я хотел бы, чтобы скрытая клавиатура была скрыта. Теперь обычно требуется фокус, чтобы скрыть мягкую клавиатуру. Когда мой ListView будет показан, то getCurrentFocus() возвращает null. Есть ли способ скрыть мягкую клавиатуру, не имея фокуса?Скрытие мягкой клавиатуры без фокусировки

Я показываю мягкую клавиатуру так:

public static void requestFocusAndMoveCursorToTheEndAndShowKeyboard(final EditText editTextParam, final Activity activityParam) { 
    if (editTextParam == null) { 
     return; 
    } 

    if (editTextParam.requestFocus()) { 
     editTextParam.setSelection(editTextParam.getText().length()); // move Cursor to the end of the EditText 
     InputMethodManager imm = (InputMethodManager) activityParam.getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 
    } 
} 

И я пытаюсь скрыть экранную клавиатуру так:

public static void hideSoftInputKeyboardFromWindow(Activity activityParam) { 
    if (activityParam == null) { 
     return; 
    } 

    View view = activityParam.getCurrentFocus(); 
    if (view != null) { 
     InputMethodManager inputMethodManager = (InputMethodManager) activityParam.getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
} 

ответ

2

использование Марка .clearFocus(); на EditText, когда вы не хотите сосредоточиться на нем.

1

В ваших AndroidMenifest.xml добавить следующее:

<activity android:name="com.your.package.ActivityName" 
     android:windowSoftInputMode="stateHidden" /> 
0

Попробуйте это: Записать следующий метод youractivity или на служебный класс

/** 
* Hide soft keypad 
* 
*/ 


public static void hideKeyboard(Activity activity, View v) { 
     InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 
    } 
0

В вашем методе hideSoftInputKeyboardFromWindow, попробуйте:

inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 

вместо

inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

Edit: хорошо же ответ, как Dorami

0

Как вы показываете их поочередно? Использование разных фрагментов? Или вы просто раздуваете разные макеты? Предоставьте более подробную информацию с полным кодом

0

Благодарим вас за ответы. В конце концов я получил это решается с помощью View.OnFocusChangeListener для EditText, как описано здесь:

Hide soft keyboard on losing focus

 Смежные вопросы

  • Нет связанных вопросов^_^