在Android開發過程中,經常會遇到點擊EditText彈出軟鍵盤時,影響UI佈局的問題。
如果不希望UI佈局被影響,可以在AndroidManifest.xml文件中,找到對應的Activity,併爲其設置屬性 android:windowSoftInputMode="adjustPan"。
設置此屬性後,在彈出軟鍵盤後,原來的UI不會重繪,即相當於軟鍵盤浮在最上層。由於UI不重繪,因此不會影響到原來佈局。
如果希望原來佈局重繪,即類似於微信聊天界面,點擊輸入框後,希望輸入框被軟鍵盤"頂上去",可不設置屬性,或將屬性設置爲 android:windowsoftinputmode="adjustresize"
---------------------------------------------------------------------------------------------------------------------------------
軟鍵盤的其他屬性及其解釋
"stateUnspecified"
軟鍵盤的狀態(是否它是隱藏或可見)沒有被指定。系統將選擇一個合適的狀態或依賴於主題的設置。
這個是爲了軟件盤行爲默認的設置。
"stateUnchanged"
軟鍵盤被保持無論它上次是什麼狀態,是否可見或隱藏,當主窗口出現在前面時。
"stateHidden"
當用戶選擇該Activity時,軟鍵盤被隱藏——也就是,當用戶確定導航到該Activity時,而不是返回到它由於離開另一個Activity。
"stateAlwaysHidden"
軟鍵盤總是被隱藏的,當該Activity主窗口獲取焦點時。
"stateVisible"
軟鍵盤是可見的,當那個是正常合適的時(當用戶導航到Activity主窗口時)。
"stateAlwaysVisible"
當用戶選擇這個Activity時,軟鍵盤是可見的——也就是,也就是,當用戶確定導航到該Activity時,而不是返回到它由於離開另一個Activity。
"adjustUnspecified"
它不被指定是否該Activity主窗口調整大小以便留出軟鍵盤的空間,或是否窗口上的內容得到屏幕上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否窗口的內容有任何佈局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個窗口將調整大小,這樣的假設可以使滾動窗口的內容在一個較小的區域中可見的。這個是主窗口默認的行爲設置。
"adjustResize"
該Activity主窗口總是被調整屏幕的大小以便留出軟鍵盤的空間
"adjustPan"
該Activity主窗口並不調整屏幕的大小以便留出軟鍵盤的空間。相反,當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因爲用戶可能關閉軟鍵盤以便獲得與被覆蓋內容的交互操作。