Android官方開發文檔Training系列課程中文版:鍵盤輸入處理之控制IME的顯示方式

來源:互聯網
上載者:User

標籤:

原文地址:http://android.xsoftlab.net/training/keyboard-input/visibility.html

當輸入的焦點進入或者離開文字框時,Android會適時的顯示或隱藏IME。系統還會決定UI及文字框如何出現在IME的上方。比如,當垂直方向上的可用空間非常緊張時,那麼文字框可能就會填充IME上方的整個地區。對於大多數的APP來說,這樣的預設行為是它們所需要的。

不過在另一些情況中,你可能需要直接控制IME的顯示方式,以及需要在IME可見的時候控制UI的排布方式。那麼這節課主要就是介紹如何?這些。

在Activity啟動的時候顯示IME

儘管在Activity啟動的時候Android將焦點給了第一個文字框,但是它是不會觸發IME彈出的。這樣的行為是符合正常的習慣的,因為進入文字框可能不會Activity啟動後的首要任務。不管怎麼說,如果進入文字框是Activity的首要任務的話(比如登入介面),那麼你可能希望預設情況下進入Activity後就會彈出IME。

為了在Activity啟動後可以顯示IME,需要在資訊清單檔中對應的Activity的元素中添加屬性android:windowSoftInputMode。如下:

<application ... >    <activity        android:windowSoftInputMode="stateVisible" ... >        ...    </activity>    ...</application>

Note:如果使用者的裝置含有實體按鍵,那麼軟鍵盤是不會彈出的。

按需求彈出IME

如果在Activity的生命週期內有這麼一個方法:你希望確保在該方法調用後IME是可見的,那麼你可以使用InputMethodManager來將它彈出。

舉個例子,下面的方法持有了一個View對象,使用者會在這個View內部輸入焦點什麼,所以調用requestFocus()方法可以將焦點賦給它,然後showSoftInput()就會將IME開啟:

public void showSoftKeyboard(View view) {    if (view.requestFocus()) {        InputMethodManager imm = (InputMethodManager)                getSystemService(Context.INPUT_METHOD_SERVICE);        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);    }}

Note: 一旦IME被彈出,那麼最好不要使用程式碼後置它。系統會在使用者終止文字框中的任務後將它隱藏或者使用者通過系統隱藏了它(比如使用了返回按鈕)。

指明你的UI應該如何響應IME的彈出

當IME出現在螢幕上時,它會減少APP在螢幕上的使用空間。那麼系統會決定如何調整UI的部分地區,但是它可能不是最準確的。為了確保APP擁有最佳的使用者體驗,應該指明系統如何調整UI。

為了聲明Activity的首選方式,應當在項目的資訊清單檔中對應的Activity下添加android:windowSoftInputMode屬性,並使用其中一個含有”adjust”的值。

舉個例子,為了確保系統可將UI調整到可用性區域域,應當使用”adjustResize”:

<application ... >    <activity        android:windowSoftInputMode="adjustResize" ... >        ...    </activity>    ...</application>

除了以上的方法,你還可以使用組合的的方式來聲明UI調整規則與IME的可見度規則:

    <activity        android:windowSoftInputMode="stateVisible|adjustResize" ... >        ...    </activity>

指明”adjustResize”是很重要的:如果UI中含有一些使用者可能需要迅速訪問的按鍵或者需要操作的文字框的話。舉個例子,如果你使用相對布局將一個按鈕放置到了螢幕的底部,那麼使用”adjustResize”調整布局可以使該按鈕出現在IME的頂部,這樣在輸入完成之後就可以直接點擊該按鈕。

Android官方開發文檔Training系列課程中文版:鍵盤輸入處理之控制IME的顯示方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.