• Android APP 隐藏系统软键盘的方法


    1.场景描述:

    1) APP项目中经常会开发自定义软键盘;同时在使用EditText时,也会常常遇到自动弹出系统自带的软键盘,与自定义的软键盘产生冲突的情况;此时需要禁止EditText自动弹出系统软键盘,从而使自定义的软键盘正常显示。

    2. 功能实现

    1)首先,在清单文件AndroidManifest.xml中,给EditText所在的Activity页面设置属性

     android:windowSoftInputMode="stateAlwaysHidden"

    最后,找到EditText所在的Activity,在初始化时设置方法

    editText.setShowSoftInputOnFocus(false);

     

    在开发中经常会遇到这样的问题,进入一个含Edittext的Activity后总是会自动弹出软件盘。但是有时候我们又不想让它弹出,因为影响美观,而且用户可能也会反感。最好的做法是刚进入时不让弹出,在用户输入的时候才让弹出,把主动权交个用户是对用户最大的尊重。

    禁止弹出软键盘输入法

    代码:

    1

    2

    3

    <activity

        android:name=".MainActivity"

        android:windowSoftInputMode="stateHidden"/>

    发现用stateAlwaysHidden也可以禁止弹出软键盘

    1

    2

    3

    <activity

        android:name=".MainActivity"

        android:windowSoftInputMode="stateAlwaysHidden"/>

    stateHidden和stateAlwaysHidden的区别

    既然stateHidden和stateAlwaysHidden都可以实现禁止弹出软键盘,那这两者到底有什么区别呢?网上看很多人都说得不清不楚,还不如自己上Android官网看最权威

    发现官网的说明还是有点晦涩难懂的,我以我的理解说明下:

    • stateHidden:当用户进入Activity后保证是隐藏软键盘的,但是如果是从另一个页面返回该页面就不能保证了。比如说用户进入A页面,然后在输入框输入内容,未收起软键盘直接进入B页面,再从B页面返回A页面,此时A页面中软键盘还是显示的。又或者是用户由A页面进入B页面,在B页面弹出软键盘,未收起直接返回A页面,此时A页面中软键盘还是显示的。
    • stateAlwaysHidden:当用户刚进入Activity后软键盘也是隐藏的。与stateHidden的区别是,还是以上面的例子来说明,比如说用户进入A页面,然后在输入框输入内容,未收起软键盘直接进入B页面,再从B页面返回A页面,此时A页面中软键盘是收起来的。又或者是用户由A页面进入B页面,在B页面弹出软键盘,未收起直接返回A页面,此时A页面中软键盘是收起来的。

    代码中设置softInputMode

    当然,我们也可以在Activity的onCreate中设置softInputMode,如下代码所示,和在Manifest中设置是等价的

    1

    2

    3

    4

    // 等价于android:windowSoftInputMode="stateHidden"

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

    // 等价于android:windowSoftInputMode="stateAlwaysHidden"

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

  • 相关阅读:
    java回收算法学习
    科技创新引领高质发展 良性竞争激发行业活力
    前端面试题总结(一)
    leetcode第80题:删除有序数组中的重复项 II
    windows安装向量数据库milvus
    嘉为蓝鲸携手广州卷烟厂斩获信通院鼎新杯两大奖项
    关于如何检查一个进程是否存活
    网络安全--对称加密
    基础漏洞练习
    内网渗透——哈希传递
  • 原文地址:https://blog.csdn.net/xiaowang_lj/article/details/134005399