文档章节

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

1071954237
 1071954237
发布于 2017/02/07 14:56
字数 164
阅读 32
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
36分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
40分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
48分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
50分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
56分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部