我把它放在我的按钮监听器上:
InputMethodManager inputManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
键盘启动时效果非常好:它关闭键盘然后继续执行。问题是,当没有按下EditText
时(没有突出显示/聚焦),它会中断并且应用程序“停止工作”。
我想如果我能检查是否曾经按过EditText会很好。
我试着这样做来检查:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) // returns true if any view is currently active in the input method
{
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
}
修改
我最终这样做了:
我创建了这个方法:
public static void hideSoftKeyboard (Activity activity, View view)
{
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
}
然后我在我的按钮监听器中调用method
,如下所示:
hideSoftKeyboard(MainActivity.this, v); // MainActivity is the name of my class and v is the View I used in my button listener method.
答案 0 :(得分:1)
你可以用这个:
您可以创建一个方法并在onCreate()方法上调用它:
public static void hideSoftKeyboard (Activity activity, View view) {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);}
或者只是你可以像这样添加清单文件:
<activity android:name="com.your.package.ActivityName"
android:windowSoftInputMode="stateHidden" />
答案 1 :(得分:0)
平庸/糟糕的解决方案,因为它不像我想要的那样通用:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
EditText x = (EditText)findViewById(R.id.editText);
x.requestFocus(); // this way no matter what, an EditText is focused on.
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);