但凡是界面上有EditText
,就必然会使用到软键盘。而软键盘相关的,一向都很恶心!
假如有这样一个页面,中间是一个
EditText
,底部有一个按钮,如何让页面在EditText
可用的时候,自动弹出软键盘;在EditText
不可用的时候,不弹出软键盘?
页面可以参考android
手机的锁屏界面的锁屏密码界面。那么,如何做到有时候自动弹出软键盘,有时候不自动弹出。并且,在弹出软件盘的时候,不应该覆盖底部的按钮。
好了,说一下以上的需求需要如何其实现呢?
- 在弹出软件盘的时候,不应该覆盖底部的按钮。
- 就这一条,”在软键盘弹出的时候,不能覆盖底部按钮”。就指定了当前
Activity
的清单文件必须加一个属性android:windowSoftInputMode="adjustResize"
- 就这一条,”在软键盘弹出的时候,不能覆盖底部按钮”。就指定了当前
- 在
EditText
可用的时候自动弹出软键盘,在EditText
不可用的时候,不弹出软键盘。
- 只要在
Activity
中设置了android:windowSoftInputMode="adjustResize"
这个属性,并且界面上有EditText
,就一定会弹出软键盘,即使是et.setEnabled(false)
也不行。!!! - 那么,新的问题来了:如何让一个设置了
windowSoftInputMode="adjustResize"
的Activity
不自动弹出软键盘呢? - :设置
et.setFocusable(false);
即可。
- 只要在
嗯,大功告成了。刚刚讲的有点乱,下面简单整理一下该需求的实现要点:
- 在清单文件对应的当前
Activity
中添加属性android:windowSoftInputMode="adjustResize"
- 在当前
Activity
的onCreate() or onResume()
代码中,去判断,当前是需要弹出软键盘还是需要不弹出?
- 若需要弹出:不用做任何操作,只有保证页面中
EditText
默认可见就可以了。
若不需要弹出:找到EditText
对象et
,调用et.setFocusable(false)
。
— END —