如果你在开发过程中经常使用 RadioGroup,那你是否遇到过下面这种情况
每当你点击EditText弹出输入法时,RadioGroup总是向上移动到输入法的上面。
你可能会想到需要给RadioGroup添加下面这条属性:
android:layout_alignParentBottom="true"
但当你打开xml文件时,很尴尬的发现这个属性已经加上了,那要怎么解决这个小bug呢?
其实很简单,只需要在AndroidManifest.xml文件里给当前类的注册信息中添加一个属性:
android:windowSoftInputMode="adjustNothing"
写法如下:
<activity
android:name=".activity.MainActivity"
android:windowSoftInputMode="adjustNothing"/>
或者是在该Activity的onCreate()方法里添加:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
下面是效果图:
你们可能要问,为什么加上这句代码就可以解决这个问题了,这就要说一下windowSoftInputMode这个属性了。
首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。
windowSoftInputMode一共有以下10个值可选:
1.adjustNothing:窗口不做调整
2.adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分(软键盘会遮挡屏幕)
3.adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间(可以显示全部屏幕)
4.adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
5.stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
6.stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
7.stateHidden:用户选择activity时,软键盘总是被隐藏
8.stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
9.sstateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
10.stateVisible:软键盘通常是可见的