一、WindowSoftInputMode是什麼?
WindowSoftInputMode是Android平台提供的一種機制,用於處理輸入框彈出時的UI變化。開發者可以通過設置WindowSoftInputMode來告知平台輸入框彈起時Activity應該如何調整其界面。具體而言,WindowSoftInputMode可以決定輸入框彈起時軟鍵盤是否覆蓋輸入框、上移或下移布局、以及是否隱藏ActionBar等行為。
二、WindowSoftInputMode的屬性
WindowSoftInputMode屬性可以設置在AndroidManifest.xml文件的Activity節點或者Activity中的onCreate()方法中,表示當軟鍵盤彈起時Activity應該執行何種操作,屬性如下:
1. stateUnspecified
狀態未指定。Activity的默認值,系統默認處理軟鍵盤的彈起方式。
2. stateUnchanged
狀態未改變。不管輸入框是否被遮擋,Activity都不做任何響應。
3. stateHidden
狀態隱藏。當軟鍵盤彈起時,Activity的布局會向上移動軟鍵盤的高度。輸入框仍然會被軟鍵盤遮擋,需要手動向上滾動才能看到輸入框。
<activity android:name=".MyActivity" android:windowSoftInputMode="stateHidden"/>
4. stateAlwaysHidden
狀態始終隱藏。與stateHidden相似,當軟鍵盤彈起時,Activity的布局會向上移動軟鍵盤的高度。不同的是,輸入框不會被遮擋,始終可見,但此時需要為輸入框設置一個滾動條,以便用戶查看所有文本內容。
<activity android:name=".MyActivity" android:windowSoftInputMode="stateAlwaysHidden"/>
5. stateVisible
狀態可見。當軟鍵盤彈起時,Activity的布局不會向上移動,軟鍵盤會覆蓋輸入框。需要手動向上滾動才能看到輸入框。
<activity android:name=".MyActivity" android:windowSoftInputMode="stateVisible"/>
6. stateAlwaysVisible
狀態始終可見。當軟鍵盤彈起時,Activity的布局不會向上移動,軟鍵盤會覆蓋輸入框。輸入框不會被遮擋,始終可見。
<activity android:name=".MyActivity" android:windowSoftInputMode="stateAlwaysVisible"/>
7. adjustUnspecified
調整未指定。Activity的默認值,系統默認處理輸入框彈起時UI的調整方式。
8. adjustResize
調整大小。當軟鍵盤彈起時,Activity的布局會自動調整高度,以便顯示完整的輸入框。此時可以自動滾動查看輸入框內的文本。
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustResize"/>
9. adjustPan
調整位置。當軟鍵盤彈起時,Activity的布局會自動向上平移,以便顯示完整的輸入框。此時不能自動滾動查看輸入框內的文本。
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustPan"/>
三、如何使用WindowSoftInputMode屬性?
WindowSoftInputMode屬性可以設置在AndroidManifest.xml文件的Activity節點或者Activity中的onCreate()方法中。如果在Activity節點中設置WindowSoftInputMode屬性,表示該Activity的所有實例都執行該設置;如果在onCreate()方法中設置,表示當前Activity的實例執行該設置。
下面是一個在AndroidManifest.xml文件中設置stateVisible和adjustResize的例子:
<activity android:name=".MyActivity" android:windowSoftInputMode="stateVisible|adjustResize"/>
下面是一個在Activity中設置stateHidden和adjustPan的例子:
public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); } }
四、總結
WindowSoftInputMode是Android平台提供的一種機制,用於處理輸入框彈出時的UI變化。通過設置WindowSoftInputMode屬性,可以告知平台輸入框彈起時Activity應該如何調整其界面。AndroidManifest.xml文件的Activity節點或者Activity中的onCreate()方法都可以設置WindowSoftInputMode屬性,便於開發者靈活地控制界面的UI變化。
原創文章,作者:CSXCX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/331907.html