Android軟鍵盤顯示模式:
android定義了一個屬性,名字為windowSoftInputMode, 用它可以讓程式可以控制活動主視窗調整的方式。我們可以在AndroidManifet.xml中對Activity進行設定。如:android:windowSoftInputMode="stateUnchanged|adjustPan"
該屬性可選的值有兩部分,一部分為軟鍵盤的狀態控制,另一部分是活動主視窗的調整。前一部分本文不做討論,請讀者自行查閱android文檔。
模式一,壓縮模式
windowSoftInputMode的值如果設定為adjustResize,那麼該Activity主視窗總是被調整大小以便留出軟鍵盤的空間。
我們通過一段代碼來測試一下,當我們設定了該屬性後,彈出IME時,系統做了什麼。
模式二,平移模式
windowSoftInputMode的值如果設定為adjustPan,那麼該Activity主視窗並不調整螢幕的大小以便留出軟鍵盤的空間。相反,當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋和使用者能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為使用者可能關閉軟鍵盤以便獲得與被覆蓋內容的互動操作。
上面的例子中,我們將AndroidManifest.xml的屬性變更:android: windowSoftInputMode = "adjustPan"
模式三 自動模式
當屬性windowSoftInputMode被設定為adjustUspecified時,它不被指定是否該Activity主視窗調整大小以便留出軟鍵盤的空間,或是否視窗上的內容得到螢幕上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否視窗的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個視窗將調整大小,這樣的假設可以使滾動視窗的內容在一個較小的地區中可見的。這個是主視窗預設的行為設定。
也就是說,系統自動決定是採用平移模式還是壓縮模式,決定因素在於內容是否可以滾動。
Android軟鍵盤開啟和關閉方式:
切換軟鍵盤:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); //得到InputMethodManager的執行個體if (imm.isActive()) {//如果開啟imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS); //關閉軟鍵盤,開啟方法相同,這個方法是切換開啟與關閉狀態的}關閉軟鍵盤
if(getCurrentFocus()!=null){((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); }