android虛擬鍵盤InputMethodManager使用


InputMethodService為我們的輸入法創建了一個Dialog,並且對某些參數進行了設置,使之能夠在底部或者全屏顯示。

在Activity中進行調整:
AndroidManifet.xml中屬性設置:windowSoftInputMode,可以讓程序控制活動主窗口調整的方式
"stateUnspecified": 軟鍵盤的狀態(隱藏或可見)沒有被指定。系統將選擇一個合適的狀態或依賴於主題的設置。這個是軟件盤行為的默認設置。 
"stateUnchanged":軟鍵盤被保持上次的狀態。
"stateHidden":當用戶選擇該Activity時,軟鍵盤被隱藏。
"stateAlwaysHidden": 軟鍵盤總是被隱藏的。
"stateVisible": 軟鍵盤是可見的。 
"stateAlwaysVisible": 當用戶選擇這個Activity時,軟鍵盤是可見的。
"adjustUnspecified": 它不被指定是否該Activity主窗口調整大小以便留出軟鍵盤的空間,或是否窗口上的內容得到屏幕上當前 的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否窗口的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個窗口將調整大小,這樣的假設可以使滾動窗口的內容在一個較小的區域中可見的。這個是主窗口默認的行為設置。也就是說,系統自動決定是采用平移模式還是壓縮模式,決定因素在於內容是否可以滾動。
"adjustResize":(壓縮模式) 當軟鍵盤彈出時,要對主窗口調整屏幕的大小以便留出軟鍵盤的空間。
"adjustPan":(平移模式:當輸入框不會被遮擋時,該模式沒有對布局進行調整,然而當輸入框將要被遮擋時,窗口就會進行平移。也就是說,該模式始終是保持輸入框為可見。)該Activity主窗口並不調整屏幕的大小以便留出軟鍵盤的空間。相反,當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為用戶可能關閉軟鍵盤以便獲得與被覆蓋內容的交互操作。
 InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
 inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS,0);
代碼:
1.打開虛擬鍵盤
  1. InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
2.關閉虛擬鍵盤
  1. InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS,0);
3.判斷輸入法打開 or 關閉
  1. InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    boolean isOpen=imm.isActive();
在XML里面設置的屬性是:android:windowSoftInputMode
 
使用adjustResize屬性之后,如果界面中沒有滾動條,需要添加一個滾動條Scrollview包裹新的內容,保證resize后能滾動小時不下的內容;
 
 
 
 
 
 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM