失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android 实现点击输入框以外的区域隐藏软键盘

Android 实现点击输入框以外的区域隐藏软键盘

时间:2019-04-13 18:17:23

相关推荐

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;@Overrideprotected 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开始的@Overridepublic 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) {//如果点击的是输入框的区域,则返回falsereturn false;} else {return true;}}}return false;}}

如果觉得《Android 实现点击输入框以外的区域隐藏软键盘》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。