最近开发一个功能能够,需要在gallery和camera应用中使用到一个界面(继承photopage),点击该界面中的editview,软键盘弹出时遮挡了控件。
1、在androidmanifest.xml中 <activity android:name="com.android.gallery3d.app.GalleryActivity" 下添加android:windowSoftInputMode="adjustResize"。 gallery 中问题可以解决。
2、如果从camera中 gallery 缩略图进入gallery,还是有遮挡问题。
3、adjustResize在全屏的时候属性失效。
正常情况设置 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN| WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );
软键盘遮挡问题依旧。
如果我们 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 不遮挡了,但是软键盘一闪而过。
看来 “adjustResize在全屏的时候属性失效”,网上说 这个可能是android的一个bug。
4、解决方法: 看来只能重新layout。
在外层加入ScrollView 或者 干脆重新设计。
WindowManager.LayoutParams. SOFT_INPUT_ADJUST_PAN | 软键盘直接覆盖Activity,通常这是默认值 |
WindowManager.LayoutParams. SOFT_INPUT_ADJUST_RESIZE | Activity高度会变化,让出软键盘的空间。 和WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN 为2选1的值 |
WindowManager.LayoutParams. SOFT_INPUT_STATE_VISIBLE | Activity一打开就直接显示软键盘窗口,如果该窗口需要的话( 即有EditText,或有Editable的控件) |
WindowManager.LayoutParams. SOFT_INPUT_STATE_HIDDEN | Activity打开后并不直接显示软键盘窗口,直到用户自己touch文本框。 |