代码如下:
//mContentView是整个页面,tv_ps_username是edittext
mContentView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mContentView.setFocusable(true);
mContentView.setFocusableInTouchMode(true);
mContentView.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(tv_ps_username.getWindowToken(), 0);
return false;
}
});
进入一个页面时edittext会自动获取焦点,并出现软键盘,不想让他显示的话只需给父布局添加这两条属性:
android:focusable="true"
android:focusableInTouchMode="true"
20170118更新
更简单的方法是在一个页面上通过整个页面的视图的点击事件 ,点击时获取当前activity的焦点,不说了,上代码:
contentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(null != BaseActivity.this.getCurrentFocus()){
/**
* 点击空白位置 隐藏软键盘
*/
InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
return mInputMethodManager.hideSoftInputFromWindow(BaseActivity.this.getCurrentFocus().getWindowToken(), 0);
}
return false;
}
});