Android 实现点击输入框以外的区域隐藏软键盘
Posted 路宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 实现点击输入框以外的区域隐藏软键盘相关的知识,希望对你有一定的参考价值。
效果图如下:
代码实现如下:
首先创建一个工具类InputMethodUtil
public class InputMethodUtil
//隐藏软键盘
public static boolean hideInputMethod(Activity activity, View view)
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
return imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
return false;
之后在InputMethodActivity类中实现点击输入框以外的区域,实现隐藏软件盘的效果
public class InputMethodActivity extends AppCompatActivity
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_method);
editText = findViewById(R.id.editText);
//请求焦点
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.RESULT_SHOWN);
//处理触摸事件的分发 是从dispatchTouchEvent开始的
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
if (ev.getAction() == MotionEvent.ACTION_DOWN)
//返回具有焦点的当前视图
View v = getCurrentFocus();
if (isShouldHideInput(v, ev))
if (InputMethodUtil.hideInputMethod(this, v))
return true;
return super.dispatchTouchEvent(ev);
private boolean isShouldHideInput(View v, MotionEvent ev)
if (v != null)
if (v instanceof EditText)
//命名一个元素为2个的整数数组
int[] leftTop = 0, 0;
//返回两个整数值,分别为X和Y,此X和Y表示此视图,在其屏幕中的坐标(以左上角为原点的坐标)
v.getLocationInWindow(leftTop);
int left = leftTop[0],
top = leftTop[1],
bottom = top + v.getHeight(),
right = left + v.getWidth();
if (ev.getX() > left && ev.getX() < right && ev.getY() > top && ev.getY() < bottom)
//如果点击的是输入框的区域,则返回false
return false;
else
return true;
return false;
以上是关于Android 实现点击输入框以外的区域隐藏软键盘的主要内容,如果未能解决你的问题,请参考以下文章
EidtText(打开界面隐藏,点击的时候软键盘不遮盖掉输入框)