android触摸外部关闭键盘,如何隐藏Android上的软键盘,点击外部EditText?

下面的代码片段简单地隐藏了键盘:public static void hideSoftKeyboard(Activity activity) {

InputMethodManager inputMethodManager =

(InputMethodManager) activity.getSystemService(

Activity.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(

activity.getCurrentFocus().getWindowToken(), 0);}

您可以将其放在实用程序类中,或者如果要在活动中定义它,请避免使用活动参数,或调用hideSoftKeyboard(this).

最棘手的部分是什么时候叫它。您可以编写一个方法来迭代View在您的活动中,并检查它是否为instanceof EditText如果它不是注册setOnTouchListener所有的东西都会就位。如果您想知道如何做到这一点,这实际上是相当简单的。下面是您所做的工作,您可以编写如下所示的递归方法,实际上您可以使用它来做任何事情,比如安装自定义字体等等.这是方法public void setupUI(View view) {

// Set up touch listener for non-text box views to hide keyboard.

if (!(view instanceof EditText)) {

view.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

hideSoftKeyboard(MyActivity.this);

return false;

}

});

}

//If a layout container, iterate over children and seed recursion.

if (view instanceof ViewGroup) {

for (int i = 0; i 

View innerView = ((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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值