android軟鍵盤遮擋EditText輸入框

在安卓開發中我們再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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章