想要做的功能是:
当软键盘弹出时,点击空白处,只隐藏软键盘,不隐藏布局 ;软键盘隐藏时 点击空白处隐藏布局
遗留问题:这样的话,当用软键盘上的按钮隐藏软件盘 焦点无法清除了
安卓的监听软键盘非常麻烦
因此通过监听焦点来实现
edittext.setOnFocusChangeListener(focusListener);
private OnFocusChangeListener focusListener = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (v == edittext) {
if (hasFocus) {
isShow = true;
} else {
isShow = false;
}
通过isShow来进行判断是否可以隐藏布局
之后要清除焦点
@Override
public boolean onDown(MotionEvent arg0) {
hideSoftInput(); //隐藏软键盘
if (isShow == false) {
hideLayout();//隐藏布局
}
<pre name="code" class="html">edittext.clearFocus(); <span style="font-family: Arial, Helvetica, sans-serif;"> </span>
}
多个控件
if (this.getCurrentFocus() != null) {
this.getCurrentFocus().clearFocus();
}
注意多个edittext清除焦点,焦点会默认到第一个edittext
因此可以将前面的textview或者其他在xml中加上
android:focusable="true"
android:focusableInTouchMode="true"
焦点会在textview身上,这样就能完全清除edittext的焦点了
注意:清除焦点要写在判断布局的后面,因为会触发焦点监听改变isShow的值
清楚焦点可以写在隐藏软键盘的方法里面,方便调用