文档章节

Android拦截点击事件,实现点击任何地方关闭输入框,键盘关闭时隐藏光标

1071954237
 1071954237
发布于 2017/02/07 14:56
字数 164
阅读 33
收藏 0

Activity 声明输入键盘默认隐藏 

     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        LogC.i("touch action");

        //don't click on edit text then hide keyboard and hide cursor
        if (ev.getAction() == MotionEvent.ACTION_UP) {
            LogC.i("touch action up");
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                boolean pressed = currentFocus.isPressed();
                //don't click on edit text
                if (currentFocus instanceof EditText && !pressed) {
                    hideSoftKeyboard();
                    getWindow().getDecorView().requestFocus();
                    ((EditText) currentFocus).setCursorVisible(false);
                    LogC.i("touch action clear focus");
                }
            }
        }
        boolean b = super.dispatchTouchEvent(ev);

        //focus is newest after dispatch event
        //click on edit text then show keyboard and show cursor
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                boolean pressed = currentFocus.isPressed();
                //click on edit text
                if (currentFocus instanceof EditText && pressed) {
                    ((EditText) currentFocus).setCursorVisible(true);
                }
            }
        }
        return b;
    }

protected void hideSoftKeyboard() {
        if (this.getCurrentFocus() != null) {
            InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
        }
    }

 

© 著作权归作者所有

共有 人打赏支持
1071954237
粉丝 2
博文 97
码字总数 36187
作品 0
程序员
Android开发之EditText属性详解

1、EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformation...

的书法上的
2014/07/28
0
0
android软键盘弹出引起的各种不适终极解决方案

很多写登录界面的开发者都会遇到一个问题:那就是在登录界面时,当你点击输入框时,下边的按钮有时会被输入框挡住,这个不利于用户的体验,所以很多人希望软键盘弹出时,也能把按钮挤上去。很...

simpower
2014/09/21
0
2
Android:imeOptions来改变软键盘Enter键图标

1.actionUnspecified 未指定,对应常量EditorInfo.IMEACTIONUNSPECIFIED. 2.actionNone 没有动作,对应常量EditorInfo.IMEACTIONNONE 3.actionGo 去往,对应常量EditorInfo.IMEACTIONGO 4.acti......

Erichkko
2015/10/28
0
0
实现输入界面适应键盘的显示和隐藏事件

方法一、设置activity的windowSoftInputMode属性 在AndroidManifest配置activity的windowSoftInputMode为“adjustResize”,一般能解决问题。 其他取值说明: "stateUnspecified" 软键盘的状...

HCMore
2014/01/15
0
0
Android软键盘遮挡的四种解决方案

一问题: 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面 二解决方案: 方法一: 在你的activity中的oncreate中setContentView之前写上这个代码 getWindow().setSof...

少年追梦
2015/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LINUX中如何查看某个端口是否被占用(转发)

LINUX中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 33...

覃大光
24分钟前
0
0
JBolt 1.5.0新版发布,升级到支持最新版JFinal和Jetty,实现了在线更新插件功能

JBolt是一个JFinal极速开发框架 定制版IDE插件 目前仅有Eclipse插件版,Idea插件版正在开发中。 JBolt的详细使用教程请移步到这里 =====版本1.5.0 更新内容 2018年10月13日10:41:52===== 注意...

山东-小木
27分钟前
0
0
laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
39分钟前
1
0
学习设计模式——抽象工厂模式

1. 认识抽象工厂模式 1. 定义:提供一个创建一系列相关或互相依赖的对象的接口,而无需指定它们具体的类。 2. 组成结构: AbstractFactory:抽象工厂类,定义创建一系列对象的操作接口 Fact...

江左煤郎
40分钟前
2
0
ES6的let块级作用域和变量不可提升导致一个比较容易出现的错误

今天在写NodeJS代码的时候出现一个变量一直提示未定义,简化后的代码如下: let param = 1;{ console.log(param);} 就在想,不至于啊。不是继承上层的声明吗? 继续看下去,发现原来...

MKjy
46分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部