android 處理輸入法可見性

2021-07-04 13:22:21 字數 1659 閱讀 8281

編寫: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...