这两天遇到了一个头疼的问题,一直没找到好久办法,各种百度,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="" />
哈哈哈,这就完美解决了我的问题,希望对遇到过这个问题的朋友们有帮助!