在安卓開發中我們再EditText輸入的時候總會遇到被軟鍵盤遮擋,下面提供幾點解決方法:
1.修改AndroidManifest.xml文件
<activity android:name=".XXXActivity"
//顯示軟鍵盤,並讓佈局壓縮
android:windowSoftInputMode="stateVisible|adjustResize"
android:screenOrientation="portrait"/>
- stateUnspecified:界面沒有設置"android:windowSoftInputMode"時的狀態.這個狀態是彈出有EditText的界面時時不彈出軟鍵盤的,當EditText獲取焦點的時候彈出軟件盤
- stateUnchanged:狀態不改變,意思就是和上一個界面相同,上一個界面彈出軟鍵盤,跳轉到這個界面時,軟鍵盤也是彈出狀態.
- stateHidden:隱藏鍵盤,彈出這個界面的時候,不管上個界面是什麼狀態,這個界面的軟鍵盤都是隱藏的.
- stateAlwaysHidden:一直隱藏(跟上面的區別未知,試不出來).
- stateVisible:強制彈出軟鍵盤.跳轉到界面後,沒有EditText也彈出鍵盤.
- stateAlwaysVisible:一直顯示鍵盤(同上).
2.在activity的onCreate()方法中設置
//設置軟鍵盤不被遮擋
Window win = getWindow();
win.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
3.在佈局文件使用ScrollView包裹布局
4.如果設置了沉浸式狀態欄,還需要在佈局文件的根節點加入
android:fitsSystemWindows="true"
可以按以上方法進行操作,
只要彈出軟鍵盤會影響到佈局的情況,都用ScrollView把佈局包裹起來,被包裹的內容就是可能被縮放或擠出屏幕外的內容.然後根據EditText的位置判斷用adjustResize還是用adjustPan.
adjustResize是收縮adjustPan是向上擠
個人推薦,登錄註冊用adjustResize,聊天窗口用adjustPan