下面的代码片段简单地隐藏了键盘:publicstaticvoidhideSoftKeyboard(Activityactivity){
InputMethodManagerinputMethodManager=
(InputMethodManager)activity.getSystemService(
Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
activity.getCurrentFocus().getWindowToken(),0);}
您可以将其放在实用程序类中,或者如果要在活动中定义它,请避免使用活动参数,或调用hideSoftKeyboard(this).
最棘手的部分是什么时候叫它。您可以编写一个方法来迭代View在您的活动中,并检查它是否为instanceof EditText如果它不是注册setOnTouchListener所有的东西都会就位。如果您想知道如何做到这一点,这实际上是相当简单的。下面是您所做的工作,您可以编写如下所示的递归方法,实际上您可以使用它来做任何事情,比如安装自定义字体等等.这是方法publicvoidsetupUI(Viewview){
//Setuptouchlistenerfornon-textboxviewstohidekeyboard.
if(!(viewinstanceofEditText)){
view.setOnTouchListener(newOnTouchListener(){
publicbooleanonTouch(Viewv,MotionEventevent){
hideSoftKeyboard(MyActivity.this);
returnfalse;
}
});
}
//Ifalayoutcontainer,iterateoverchildrenandseedrecursion.
if(viewinstanceofViewGroup){
for(inti=0;i
ViewinnerView=((ViewGroup)view).getChildAt(i);
setupUI(innerView);
}
}}
仅此而已,只需在您之后调用此方法即可。setContentView在你的活动中。如果您想知道您将传递哪个参数,则是id父容器的。分配id到父容器,如
...
打电话setupUI(findViewById(R.id.parent))仅此而已。
如果您想有效地使用它,您可以创建一个扩展Activity并将此方法放入应用程序中,并使应用程序中的所有其他活动扩展该活动并调用其setupUI()在onCreate()方法。
希望能帮上忙。
如果使用了多个活动,请定义公共id到父级布局,如 ...
然后将类扩展到Activity并定义setupUI(findViewById(R.id.main_parent))在其OnResume()并扩展该类,而不是“活动”in your program
如果觉得《android触摸外部关闭键盘 如何隐藏Android上的软键盘 点击外部EditText?》对你有帮助,请点赞、收藏,并留下你的观点哦!