編寫:zhaochunqi - 原文:當輸入焦點移入或移出可編輯的文字框時,android會相應的顯示或隱藏輸入法(如虛擬鍵盤)。系統也會決定輸入法上方的 ui 和文字框的顯示方式。舉例來說,當螢幕上垂直空間被壓縮時,文字框可能填充輸入法上方所有的空間。對於多數的應用來說,這些預設的行為基本就足夠了。
然而,在一些事例中,我們可能會想要更加直接地控制輸入法的顯示,指定在輸入法顯示的時候,如何顯示我們的布局。這節課會解釋如何控制和響應輸入法的可見性。
儘管android會在activity啟動時將焦點放在布局中的第乙個文字框,但是並不會顯示輸入法。因為輸入文字可能並不是activity中的首要任務,所以不顯示輸入法是很合理的。可是,如果輸入文字確實是首要的任務(如在登入介面中),那麼可能需要預設顯示輸入法。
為了在activity啟動時顯示輸入法,新增 android:windowsoftinputmode 屬性到 節點中,並將該屬性的值設為"statevisible"
。如下:
... >
android:windowsoftinputmode="statevisible"
... >
...activity>
...
note: 如果使用者的裝置有乙個實體鍵盤,那麼不會顯示軟輸入法。如果我們想要確保輸入法在activity生命週期的某個方法中是可見的,那麼可以使用 inputmethodmanager 來實現。
舉例來說,下面的方法呼叫了乙個需要使用者填寫文字的view,呼叫了 requestfocus() 來獲取焦點,然後呼叫showsoftinput() 來開啟輸入法。
public
void
showsoftkeyboard
(view view)
}
note: 一旦輸入法可見,我們不應該以程式設計的方式來隱藏它。系統會在使用者結束文字框的任務時隱藏輸入法,或者可以使用系統控制(如返回鍵)來隱藏。為了在activity中宣告合適的處理方法,可以在 manifest 檔案的 節點中使用android:windowsoftinputmode 屬性,並將該屬性的值設為"adjust"。
舉例來說,為了確保系統會在可用空間中重新調整布局的大小——確保所有的布局內容都可以被使用(儘管可能需要滑動)——使用"adjustresize"
:
... >
android:windowsoftinputmode="adjustresize"
... >
...activity>
...我們可以結合上述調整說明和初始化輸入法可見性說明:
android:windowsoftinputmode="statevisible|adjustresize"
... >
...activity>
如果 ui 中包含使用者可能需要在文字輸入時立即執行的事情,那麼使用"adjustresize"
是很重要的。例如,如果我們使用相對布局(relative layout)在螢幕底部放置乙個按鈕,用"adjustresize"
來重新調整大小,使得按鈕欄出現在輸入法上方。
**自:
Android輸入法開發
android 1.5 新特色之一就是輸入法框架 input method framework,imf 正是它的出現,才為誕生不帶實體鍵盤的裝置提供了可能。imf設計用來支援不同的ime,包括了soft keyboard,hand writing recognizes和hard keyboard t...
Android輸入法教程
本帖最後由 yanghe123 於 2012 4 28 15 51 編輯 android輸入法教程 輸入法框架 android輸入法框梳理 在android中建立一種新的輸入法 android 呼叫輸入法 android輸入法手勢程式原始碼 android輸入法開發例項 android 輸入法的問題...
Android 隱藏輸入法
對於edittext 可以設定setinputtype inputtype.type null 輸入法就不會彈出。需要的時候在動態設定inputtyep.如果一載入activity 可以用getwindow setsoftinputmode windowmanager.layoutparams.so...