我正在使用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);
}
}
答案 0 :(得分:2)
如果您不想关注edittext,请在edittext上使用.clearFocus();。
答案 1 :(得分:1)
在你的AndroidManifest.xml中添加:
<activity android:name="com.your.package.ActivityName"
android:windowSoftInputMode="stateHidden" />
答案 2 :(得分: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);
}
答案 3 :(得分:0)
在hideSoftInputKeyboardFromWindow
方法中,尝试:
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
而不是
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
编辑:和Dorami一样答案
答案 4 :(得分:0)
如何交替显示它们?使用不同的片段?或者你只是夸大不同的布局?使用完整的代码提供更多详细信息
答案 5 :(得分:0)
感谢您的回答。最后,我使用View.OnFocusChangeListener为EditText解决了问题,如下所述: