本文為原創(chuàng)文章,轉(zhuǎn)載請(qǐng)標(biāo)明出處
今天做了一個(gè)如下圖所示的頁面。
iOS 端毫無 bug,Android 端卻出現(xiàn)了問題。當(dāng)軟鍵盤彈出后,Android 端的 tabs 移到了軟鍵盤的上面,再仔細(xì)一看,整個(gè)界面都被壓扁了,輸入框也不知道去哪兒了。
于是去翻 Ionic Native - Keyboard 文檔,并未發(fā)現(xiàn)有能解決該問題的方法。于是又?想到是不是 android:windowSoftInputMode 屬性出了問題,打開 AndroidManifest.xml,發(fā)現(xiàn) Ionic 3 將 android:windowSoftInputMode 屬性默認(rèn)設(shè)置為 adjustResize 值,將屬性值修改為 adjustPan|stateHidden,問題完美解決。
接下來就詳解一下 android:windowSoftInputMode 屬性。
屬性值一共有以下9個(gè):stateUnspecified、stateUnchanged、stateHidden、stateAlwaysHidden、stateVisible、stateAlwaysVisible、adjustUnspecified、adjustResize、adjustPan。
stateUnspecified
未指定軟鍵盤的狀態(tài),系統(tǒng)將自動(dòng)選擇一個(gè)合適的狀態(tài)或依賴于主題中的設(shè)置。
stateUnchanged
當(dāng)前界面的軟鍵盤狀態(tài)取決于上一個(gè)界面的軟鍵盤狀態(tài)。
stateHidden
用戶選擇 Activity 時(shí),軟鍵盤總是被隱藏。
stateAlwaysHidden
當(dāng)該 Activity 主窗口有輸入需求時(shí),軟鍵盤總是被隱藏。
stateVisible
軟鍵盤通??梢?。
stateAlwaysVisible
用戶選擇 Activity 時(shí),軟鍵盤總是可見。
adjustUnspecified
未指定軟鍵盤與界面內(nèi)容之間的顯示關(guān)系。
adjustResize
該 Activity 總是調(diào)整屏幕的大小以便留出軟鍵盤的空間。
adjustPan
當(dāng)前窗口的內(nèi)容將自動(dòng)移動(dòng)以便當(dāng)前焦點(diǎn)從不被鍵盤覆蓋和用戶總能看到輸入的內(nèi)容。
如有不當(dāng)之處,請(qǐng)予指正,謝謝~