android:在有EditText的Activity上,控制自动显示或者隐藏软键盘

但凡是界面上有EditText,就必然会使用到软键盘。而软键盘相关的,一向都很恶心!

假如有这样一个页面,中间是一个EditText,底部有一个按钮,如何让页面在EditText可用的时候,自动弹出软键盘;在EditText不可用的时候,不弹出软键盘?
页面可以参考android手机的锁屏界面的锁屏密码界面。

那么,如何做到有时候自动弹出软键盘,有时候不自动弹出。并且,在弹出软件盘的时候,不应该覆盖底部的按钮。


好了,说一下以上的需求需要如何其实现呢?

  1. 在弹出软件盘的时候,不应该覆盖底部的按钮。
    • 就这一条,”在软键盘弹出的时候,不能覆盖底部按钮”。就指定了当前Activity的清单文件必须加一个属性 android:windowSoftInputMode="adjustResize"
  2. EditText可用的时候自动弹出软键盘,在EditText不可用的时候,不弹出软键盘。
    • 只要在Activity中设置了 android:windowSoftInputMode="adjustResize"这个属性,并且界面上有EditText,就一定会弹出软键盘,即使是et.setEnabled(false)也不行。!!!
    • 那么,新的问题来了:如何让一个设置了windowSoftInputMode="adjustResize"Activity不自动弹出软键盘呢?
    • :设置et.setFocusable(false);即可。

嗯,大功告成了。刚刚讲的有点乱,下面简单整理一下该需求的实现要点:

  1. 在清单文件对应的当前Activity中添加属性android:windowSoftInputMode="adjustResize"
  2. 在当前ActivityonCreate() or onResume()代码中,去判断,当前是需要弹出软键盘还是需要不弹出?
    • 若需要弹出:不用做任何操作,只有保证页面中EditText默认可见就可以了。
      若不需要弹出:找到EditText对象 et,调用et.setFocusable(false)

— END —

猜你喜欢

转载自blog.csdn.net/ducklikejava/article/details/78019747