Android(安卓)Studio点击空白处收起软键盘
16lz
2021-12-23
Android Studio点击空白处收起软键盘
package com.example.mynewtest;import android.content.Context;import android.os.Bundle;import androidx.appcompat.app.AppCompatActivity;import androidx.appcompat.widget.Toolbar;import android.view.MotionEvent;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.Button;import android.widget.EditText;public class Login extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); } //点击空白区域隐藏键盘 public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); //当isShouldHideInput(v, ev)为true时,表示的是点击输入框区域,则需要显示键盘,同时显示光标,反之,需要隐藏键盘、光标 if (isShouldHideInput(v, ev)) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); //处理Editext的光标隐藏、显示逻辑 // t1.clearFocus(); } } return super.dispatchTouchEvent(ev); } // 必不可少,否则所有的组件都不会有TouchEvent了 if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } public boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] leftTop = { 0, 0 }; //获取输入框当前的location位置 v.getLocationInWindow(leftTop); int left = leftTop[0]; int top = leftTop[1]; int bottom = top + v.getHeight(); int right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击的是输入框区域,保留点击EditText的事件 return false; } else { return true; } } return false; }}
更多相关文章
- android中隐藏以及显示软键盘代码
- android 截获键盘事件
- Android(安卓)键盘弹出与隐藏
- android之实现各个组件点击事件监听
- Android(安卓)点击回退按钮时弹出提示框
- Android应用程序启动画面
- Android(安卓)点击按钮隐藏键盘
- android 监听判断软键盘的弹出、隐藏状态
- android软键盘的显示与隐藏