W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/visibility.html
當(dāng)輸入焦點(diǎn)移入或移出可編輯的文本框時(shí),Android會(huì)相應(yīng)的顯示或隱藏輸入法(如虛擬鍵盤)。系統(tǒng)也會(huì)決定輸入法上方的 UI 和文本框的顯示方式。舉例來(lái)說(shuō),當(dāng)屏幕上垂直空間被壓縮時(shí),文本框可能填充輸入法上方所有的空間。對(duì)于多數(shù)的應(yīng)用來(lái)說(shuō),這些默認(rèn)的行為基本就足夠了。
然而,在一些事例中,我們可能會(huì)想要更加直接地控制輸入法的顯示,指定在輸入法顯示的時(shí)候,如何顯示我們的布局。這節(jié)課會(huì)解釋如何控制和響應(yīng)輸入法的可見性。
盡管Android會(huì)在Activity啟動(dòng)時(shí)將焦點(diǎn)放在布局中的第一個(gè)文本框,但是并不會(huì)顯示輸入法。因?yàn)檩斎胛谋究赡懿⒉皇莂ctivity中的首要任務(wù),所以不顯示輸入法是很合理的??墒?,如果輸入文本確實(shí)是首要的任務(wù)(如在登錄界面中),那么可能需要默認(rèn)顯示輸入法。
為了在activity啟動(dòng)時(shí)顯示輸入法,添加 android:windowSoftInputMode 屬性到 <activity> 節(jié)點(diǎn)中,并將該屬性的值設(shè)為 "stateVisible"
。如下:
<application ... >
<activity
android:windowSoftInputMode="stateVisible" ... >
...
</activity>
...
</application>
Note: 如果用戶的設(shè)備有一個(gè)實(shí)體鍵盤,那么不會(huì)顯示軟輸入法。
如果我們想要確保輸入法在activity生命周期的某個(gè)方法中是可見的,那么可以使用 InputMethodManager 來(lái)實(shí)現(xiàn)。
舉例來(lái)說(shuō),下面的方法調(diào)用了一個(gè)需要用戶填寫文本的View,調(diào)用了 requestFocus() 來(lái)獲取焦點(diǎn),然后調(diào)用 showSoftInput() 來(lái)打開輸入法。
public void showSoftKeyboard(View view) {
if (view.requestFocus()) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}
}
Note: 一旦輸入法可見,我們不應(yīng)該以編程的方式來(lái)隱藏它。系統(tǒng)會(huì)在用戶結(jié)束文本框的任務(wù)時(shí)隱藏輸入法,或者可以使用系統(tǒng)控制(如返回鍵)來(lái)隱藏。
當(dāng)輸入法顯示在屏幕上時(shí),會(huì)減少 app UI 中的可用空間。系統(tǒng)會(huì)決定如何調(diào)整 UI 可見的部分,但是這樣做不一定正確。為了確保應(yīng)用的最佳表現(xiàn),我們應(yīng)該在 UI 的剩余空間中展示我們想要展示的系統(tǒng)界面。
為了在activity中聲明合適的處理方法,可以在 manifest 文件的 <activity> 節(jié)點(diǎn)中使用 android:windowSoftInputMode 屬性,并將該屬性的值設(shè)為"adjust"。
舉例來(lái)說(shuō),為了確保系統(tǒng)會(huì)在可用空間中重新調(diào)整布局的大小——確保所有的布局內(nèi)容都可以被使用(盡管可能需要滑動(dòng))——使用 "adjustResize"
:
<application ... >
<activity
android:windowSoftInputMode="adjustResize" ... >
...
</activity>
...
</application>
我們可以結(jié)合上述調(diào)整說(shuō)明和初始化輸入法可見性說(shuō)明:
<activity
android:windowSoftInputMode="stateVisible|adjustResize" ... >
...
</activity>
如果 UI 中包含用戶可能需要在文本輸入時(shí)立即執(zhí)行的事情,那么使用 "adjustResize"
是很重要的。例如,如果我們使用相對(duì)布局(relative layout)在屏幕底部放置一個(gè)按鈕,用 "adjustResize"
來(lái)重新調(diào)整大小,使得按鈕欄出現(xiàn)在輸入法上方。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: