題記:
馬上就國慶長假了,感覺很開心呀。
windowSoftInputMode 是Android提供給我們設置activity窗口和軟件盤的交互模式,一共有兩種設置方式:
第一種:清單文件中設置
<activity
android:name=""
android:theme="@style/translucent"
android:windowSoftInputMode="stateAlwaysVisible|adjustResize"/>
第二種:代碼中設置
WindowManager.LayoutParams params = activity.getWindow().getAttributes(); if (params.softInputMode != softInputMode) { params.softInputMode = softInputMode; params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; activity.getWindow().setAttributes(params); }
if (!activity.isFinishing()) { activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_MODE_CHANGED); }
這邊記錄下一些常用的模式,這些模式主要區分爲兩種,一種是state開頭的,還有一種是adjust開頭的,state開頭的是軟鍵盤是否彈出有關,adjust是窗口的佈局和軟鍵盤顯示的關係
1.stateAlwaysVisible : 進入activity和返回到當前的activity 的時候彈出軟鍵盤
2.stateVisible :和stateAlwaysVisible 屬性一樣的意思,唯一的區別是在返回的時候不彈出軟鍵盤
3. stateHidden:Editext即使獲取焦點也隱藏軟鍵盤隱藏軟鍵盤,除非用戶手動點擊輸入框來喚起軟鍵盤,代碼設置獲取焦點 也無效
4.adjustUnspecified: 默認的設置,由系統來決定是否彈出軟鍵盤,一般有editext都會彈出軟鍵盤
5.adjustResize:佈局指定底部的佈局會隨着軟鍵盤彈出,而改變位置,常見的場景爲QQ和微信輸入框上面的佈局
6.adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分,意思是整體的佈局會隨着軟件盤的移動而移動,不讓軟鍵盤遮擋住輸入框
7.stateUnchanged:當前窗口的軟鍵盤的顯示狀態和他上一個窗口保持一致