Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式
原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html
當輸入的焦點進入或者離開文本框時,Android會適時的顯示或隱藏輸入法。系統還會決定UI及文本框如何出現在輸入法的上方。比如,當垂直方向上的可用空間非常緊張時,那么文本框可能就會填充輸入法上方的整個區域。對于大多數的APP來說,這樣的默認行為是它們所需要的。
不過在另一些情況中,你可能需要直接控制輸入法的顯示方式,以及需要在輸入法可見的時候控制UI的排布方式。那么這節課主要就是介紹如何實現這些。
在Activity啟動的時候顯示輸入法
盡管在Activity啟動的時候Android將焦點給了第一個文本框,但是它是不會觸發輸入法彈出的。這樣的行為是符合正常的習慣的,因為進入文本框可能不會Activity啟動后的首要任務。不管怎么說,如果進入文本框是Activity的首要任務的話(比如登錄界面),那么你可能希望默認情況下進入Activity后就會彈出輸入法。
為了在Activity啟動后可以顯示輸入法,需要在清單文件中對應的Activity的元素中添加屬性android:windowSoftInputMode。如下:
<application ... ><activity android:windowSoftInputMode="stateVisible" ... >...</activity>... </application>Note:如果用戶的設備含有實體按鍵,那么軟鍵盤是不會彈出的。
按需求彈出輸入法
如果在Activity的生命周期內有這么一個方法:你希望確保在該方法調用后輸入法是可見的,那么你可以使用InputMethodManager來將它彈出。
舉個例子,下面的方法持有了一個View對象,用戶會在這個View內部輸入點什么,所以調用requestFocus()方法可以將焦點賦給它,然后showSoftInput()就會將輸入法打開:
public void showSoftKeyboard(View view) {if (view.requestFocus()) {InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);} }Note: 一旦輸入法被彈出,那么最好不要使用代碼隱藏它。系統會在用戶終止文本框中的任務后將它隱藏或者用戶通過系統隱藏了它(比如使用了返回按鈕)。
指明你的UI應該如何響應輸入法的彈出
當輸入法出現在屏幕上時,它會減少APP在屏幕上的使用空間。那么系統會決定如何調整UI的部分區域,但是它可能不是最準確的。為了確保APP擁有最佳的用戶體驗,應該指明系統如何調整UI。
為了聲明Activity的首選方式,應當在項目的清單文件中對應的Activity下添加android:windowSoftInputMode屬性,并使用其中一個含有”adjust”的值。
舉個例子,為了確保系統可將UI調整到可用區域,應當使用”adjustResize”:
<application ... ><activity android:windowSoftInputMode="adjustResize" ... >...</activity>... </application>除了以上的方法,你還可以使用組合的的方式來聲明UI調整規則與輸入法的可見性規則:
<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >...</activity>指明”adjustResize”是很重要的:如果UI中含有一些用戶可能需要迅速訪問的按鍵或者需要操作的文本框的話。舉個例子,如果你使用相對布局將一個按鈕放置到了屏幕的底部,那么使用”adjustResize”調整布局可以使該按鈕出現在輸入法的頂部,這樣在輸入完成之后就可以直接點擊該按鈕。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:键盘输入处理之控制输入法的显示方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录对String.format(For
- 下一篇: 新闻事件报道重要性判定项目