iOS 端毫無 bug,Android 端卻出現了問題。當軟鍵盤彈出後,Android 端的 tabs 移到了軟鍵盤的上面,再仔細一看,整個界面都被壓扁了,輸入框也不知道去哪兒了。
於是去翻 Ionic Native - Keyboard 文檔,並未發現有能解決該問題的方法。於是又想到是不是 android:windowSoftInputMode 屬性出了問題,打開 AndroidManifest.xml,發現 Ionic 3 將 android:windowSoftInputMode 屬性默認設置爲 adjustResize 值,將屬性值修改爲 adjustPan|stateHidden,問題完美解決。
接下來就詳解一下 android:windowSoftInputMode 屬性。
屬性值一共有以下9個:stateUnspecified、stateUnchanged、stateHidden、stateAlwaysHidden、stateVisible、stateAlwaysVisible、adjustUnspecified、adjustResize、adjustPan。
stateUnspecified
未指定軟鍵盤的狀態,系統將自動選擇一個合適的狀態或依賴於主題中的設置。
stateUnchanged
當前界面的軟鍵盤狀態取決於上一個界面的軟鍵盤狀態。
stateHidden
用戶選擇 Activity 時,軟鍵盤總是被隱藏。
stateAlwaysHidden
當該 Activity 主窗口有輸入需求時,軟鍵盤總是被隱藏。
stateVisible
軟鍵盤通常可見。
stateAlwaysVisible
用戶選擇 Activity 時,軟鍵盤總是可見。
adjustUnspecified
未指定軟鍵盤與界面內容之間的顯示關係。
adjustResize
該 Activity 總是調整屏幕的大小以便留出軟鍵盤的空間。
adjustPan
當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶總能看到輸入的內容。