Android实现点击空白处回收键盘

这篇具有很好参考价值的文章主要介绍了Android实现点击空白处回收键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1点击空白回收键盘的思路

首先肯定要判断出点击屏幕的位置是不是空白处,如果不是空白处则不需要进行键盘的收回
1如何判断是空白处还是输入框?需要监听一下触摸的位置,如果触摸的位置在输入框内,则不需要进行回收。否则如果触摸的位置在输入框之外,则需要进行键盘回收

public static boolean isShouldHideKeyBord(View v, MotionEvent ev) {
        if (v != null && (v instanceof EditText)) {
            int[] l = {0, 0};
            //获取到当前窗口的父窗口坐标
            v.getLocationInWindow(l);
            int left = l[0];
            int top = l[1];
            int bottom = top + v.getHeight();
            int right = left + v.getWidth();
            return !(ev.getX() > left && ev.getX() < right && ev.getY() > top && ev.getY() < bottom);
        }
        return false;
    }

2如何进行回收键盘,如下文章来源地址https://www.toymoban.com/news/detail-581466.html

public static void hintKeyBoards(View view) {
        InputMethodManager manager = ((InputMethodManager) view.getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE));
        if (manager != null) {
            manager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }

总结:将以上两个步骤封装到一个工具类中,使用时直接加到相应的界面即可

public class KeyboardUtils {
    //展示键盘的方法
    public static void showKeyboard(View view) {
        InputMethodManager imm = (InputMethodManager) view.getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            view.requestFocus();
            imm.showSoftInput(view, 0);
        }
    }

    /**
     * 隐藏软键盘
     * @param view
     */
    public static void hintKeyBoards(View view) {
        InputMethodManager manager = ((InputMethodManager) view.getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE));
        if (manager != null) {
            manager.hideSoftInputFromWindow(view.getWindowToken(), 0);
        }
    }

    /**
     * 判定当前是否需要隐藏
     */
    public static boolean isShouldHideKeyBord(View v, MotionEvent ev) {
        if (v != null && (v instanceof EditText)) {
            int[] l = {0, 0};
            //获取到当前窗口的父窗口坐标
            v.getLocationInWindow(l);
            int left = l[0];
            int top = l[1];
            int bottom = top + v.getHeight();
            int right = left + v.getWidth();
            return !(ev.getX() > left && ev.getX() < right && ev.getY() > top && ev.getY() < bottom);
        }
        return false;
    }
}

2Kotlin使用方法,直接在需要的界面中加入以下方法即可

		@CallSuper
        override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
                if (ev.action == MotionEvent.ACTION_DOWN) {
                        val view = currentFocus
                        //打印出x和y的坐标位置
                        if (KeyboardUtils.isShouldHideKeyBord(view, ev)) {
                                KeyboardUtils.hintKeyBoards(view)
                        }
                }
                return super.dispatchTouchEvent(ev)
        }

到了这里,关于Android实现点击空白处回收键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE实现弹出框 点击空白页弹框消失

    可以在Vue中实现弹出框然后通过点击空白页面来让弹窗隐藏。具体实现如下: 创建弹出框组件 在Vue中创建一个弹出框组件,用来呈现弹出框的内容和样式。该组件应该接受两个 props,一个是 show,表示弹出框是否显示,另一个是 onClose,表示弹出框的关闭函数。 创建父组件

    2024年02月15日
    浏览(44)
  • Android点击EditText禁止弹出软键盘

    今天做了一个点击EditText获取焦点,不弹出设备系统键盘,只弹出自定义键盘,在网上能查到很多实现这一功能的方法,试了很多,只有一种对我来说是好用的,做个记录方便以后使用 方法一:这个对我来说好用的,也是唯一一个好用的,还会多分享几个网上说的一些好用的

    2024年02月11日
    浏览(37)
  • android 点击输入框editText后点击textview会弹出软键盘问题解决

    在 Android 中,当一个 EditText 或其它可以输入文本的控件获取焦点时,系统会自动弹出软键盘以便用户输入。当软键盘弹出后,点击其它控件,比如 TextView,也会触发 EditText 失去焦点的事件,从而导致软键盘关闭。这是 Android 系统默认的行为。 但是,在某些情况下,用户希望

    2024年02月15日
    浏览(52)
  • 键盘怎么控制鼠标?键盘控制鼠标实现点击和移动

    鼠标在电脑操作过程中非常重要,可是有时遇到尴尬的问题,就是摸鱼的时候觉得一直点击鼠标声音太大,或者舍友都睡觉了,你突然之间需要浏览一些网页,一直点击鼠标会产生很大的噪声,这时候该怎么办呢?如果你是笔记本,配合鼠标版可以解决。如果你正好有一个静

    2024年02月06日
    浏览(52)
  • Java实现键盘按键点击效果

    最近一个项目中实现java项目中模拟点击键盘效果,在此记录一下 使用rebot可以实现 Java执行exe程序(exe为autoit生成的脚本程序,fileName为传入的参数)

    2024年02月12日
    浏览(42)
  • 微信小程序-长按显示,点击空白区域关闭

    之前使用longtap,松开后会触发tap事件,刚出来就会消失,使用longpress后就可以解决这个问题了

    2024年04月22日
    浏览(38)
  • uniapp微信小程序 实现评论键盘弹出的时候 有两个输入框,第一个输入框被禁用并绑定了点击事件,点击后想要触发第二个输入框获取焦点并弹出键盘。但是在 iOS 真机上点击后键盘会短暂失去焦点

    问题 :我现在有一个需求就是 要实现输入评论  有两个输入框,第一个输入框被禁用并绑定了点击事件,点击后想要触发第二个输入框获取焦点并弹出键盘。但是在 iOS 真机上点击后键盘会短暂失去焦点  安卓真机测试没有问题 原因 : 1. iOS 上输入框聚焦有一个显式的动画过

    2024年02月04日
    浏览(58)
  • el-dialog点击空白不允许关闭,只能点击关闭和取消按钮才消失

    使用场景 在使用Dialog组件时,当点击弹框外的空白处时,仍然会触发关闭弹框事件,一些业务场景不适合使用这种交互,需要只能点击关闭和取消按钮才消失。 方法一   方法二

    2024年02月11日
    浏览(45)
  • uniapp、微信小程序:点击空白/蒙版关闭弹窗

    重点:(点击空白区域关闭弹窗,同理) @click.stop:用于阻止冒泡。 添加@click.stop的标签范围内,点击任何区域(包括@click的点击事件)不会关闭弹窗。标签范围外,会关闭弹窗。 @click.stop标签内的@click等事件:如果事件内有关闭弹窗的代码,(不影响)可关闭弹窗。 (下面

    2024年02月11日
    浏览(87)
  • flutter 键盘回收操作

    日常开发中,很多时候键盘不会自动回收,这样会照成非常不好的用户体验,本篇文章,将记录如何统一封装键盘回收功能。

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包