android开发中,ListView中输入框与软键盘的坑

这两天遇到了一个头疼的问题,一直没找到好久办法,各种百度,google,看了很多大牛们的帖子后,才找到了一点思路,下面我就把解决办法给大家分享一下。
主要的问题是:ListView中edittext,输入数据的时候,软键盘弹出,但是输入完成后,如果不大软键盘缩回去,输入的数据是无效的,获取数据的时候是空。这就蛋疼了...
好在有这个一个东西:


InputMethodManager imm = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

本以为可以解决了问题,但是发现我的程序是开启新的线程来完成操作的,所以还没来的急关闭输入法呢,启动了线程,pass...

那怎么办呢

private void listenerSoftInput() {
        final View activityRootView = findViewById(R.id.baojia);
        activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int heightDiff = activityRootView.getRootView()
                        .getHeight() - activityRootView.getHeight();
                if (heightDiff > 100) { // 如果高度差超过100像素,就很有可能是有软键盘...
                    Log.e("软键盘弹出了", "软键盘弹出");
                    confim.setVisibility(View.GONE);
                } else if (heightDiff < 100) {
                    Log.e("软键盘弹出了", "软键盘没有弹出");
                    confim.setVisibility(View.VISIBLE);
                    //new Thread(Confim).start();
                }
            }
        });
    }
同过了些这个一个方法,来判断是否弹出了软键盘,是则怎么操作,否则怎么操作。。。

上图代码中,confim是我的一个按钮控件,

final View activityRootView = findViewById(R.id.baojia);是你的布局文件的id,
<img src="https://img-blog.csdn.net/20160707100205917?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

哈哈哈,这就完美解决了我的问题,希望对遇到过这个问题的朋友们有帮助!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值