android 處理輸入法可見性
編寫:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/visibility.html
當輸入焦點移入或移出可編輯的文字框時,Android會相應的顯示或隱藏輸入法(如虛擬鍵盤)。系統也會決定輸入法上方的 UI 和文字框的顯示方式。舉例來說,當螢幕上垂直空間被壓縮時,文字框可能填充輸入法上方所有的空間。對於多數的應用來說,這些預設的行為基本就足夠了。
然而,在一些事例中,我們可能會想要更加直接地控制輸入法的顯示,指定在輸入法顯示的時候,如何顯示我們的佈局。這節課會解釋如何控制和響應輸入法的可見性。
在Activity啟動時顯示輸入法
儘管Android會在Activity啟動時將焦點放在佈局中的第一個文字框,但是並不會顯示輸入法。因為輸入文字可能並不是activity中的首要任務,所以不顯示輸入法是很合理的。可是,如果輸入文字確實是首要的任務(如在登入介面中),那麼可能需要預設顯示輸入法。
為了在activity啟動時顯示輸入法,新增 android:windowSoftInputMode 屬性到 <activity> 節點中,並將該屬性的值設為 "stateVisible"
。如下:
<application ... >
<activity
android:windowSoftInputMode="stateVisible" ... >
...
</activity>
...
</application>
Note: 如果使用者的裝置有一個實體鍵盤,那麼不會顯示軟輸入法。
根據需要顯示輸入法
如果我們想要確保輸入法在activity生命週期的某個方法中是可見的,那麼可以使用 InputMethodManager 來實現。
舉例來說,下面的方法呼叫了一個需要使用者填寫文字的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 中的可用空間。系統會決定如何調整 UI 可見的部分,但是這樣做不一定正確。為了確保應用的最佳表現,我們應該在 UI 的剩餘空間中展示我們想要展示的系統介面。
為了在activity中宣告合適的處理方法,可以在 manifest 檔案的 <activity> 節點中使用android:windowSoftInputMode 屬性,並將該屬性的值設為"adjust"。
舉例來說,為了確保系統會在可用空間中重新調整佈局的大小——確保所有的佈局內容都可以被使用(儘管可能需要滑動)——使用 "adjustResize"
:
<application ... >
<activity
android:windowSoftInputMode="adjustResize" ... >
...
</activity>
...
</application>
我們可以結合上述調整說明和初始化輸入法可見性說明:
<activity
android:windowSoftInputMode="stateVisible|adjustResize" ... >
...
</activity>
如果 UI 中包含使用者可能需要在文字輸入時立即執行的事情,那麼使用 "adjustResize"
是很重要的。例如,如果我們使用相對佈局(relative layout)在螢幕底部放置一個按鈕,用 "adjustResize"
來重新調整大小,使得按鈕欄出現在輸入法上方。
轉發自:http://hukai.me/android-training-course-in-chinese/input/keyboard-input/visibility.html
相關文章
- 輸入法圖示不見了怎麼辦win10 Windows10輸入法不見了怎麼處理Win10Windows
- 輸入法擋住輸入框和點選空白處把手機的輸入法影藏(焦點處理)
- win10輸入法遮蔽如何恢復_win10遮蔽輸入法處理方法Win10
- win10輸入法只能輸入英文如何處理_win10輸入法失效只能打英文解決方法Win10
- win10輸入法卡頓如何修復_win10輸入法卡頓非常慢處理方法Win10
- Android輸入系統(二)IMS的啟動過程和輸入事件的處理Android事件
- win10無法刪除微軟輸入法怎麼辦 win10微軟輸入法刪除不了處理方法Win10微軟
- Win10電腦搜狗輸入法無法輸入中文及輸入法欄不見了的解決方法Win10
- 處理stdin輸入的字串指令字串
- android指定輸入法型別Android型別
- win10輸入法切換不了中文怎麼處理_win10輸入法無法切換中文如何修復Win10
- pat處理輸入輸出小技巧(待更新)
- win10輸入法不見了怎麼找回 win10輸入法不見了找回的方法Win10
- Python-OpenCV 處理視訊(一)(二): 輸入輸出 視訊處理PythonOpenCV
- Android許可權處理分類Android
- 檔案輸入輸出處理(二)-位元組流
- 處理鍵盤輸入訊息(轉)
- imemode 控制輸入法,控制輸入框的輸入法
- win10輸入法不見了怎麼辦 win10輸入法欄消失了Win10
- win10系統輸入法切換不了怎麼處理_win10輸入法切換不瞭解決教程Win10
- win10中文輸入法不展示文字怎麼處理_win10中文輸入法不顯示文字如何恢復Win10
- win10切換輸入法當機如何修復_win10切換輸入法電腦就卡死處理方法Win10
- Synchronized同步性與可見性synchronized
- Python-OpenCV 處理視訊(一): 輸入輸出PythonOpenCV
- PostgreSQL vacuum可見性SQL
- 工作列輸入法圖示不見了怎麼辦? 顯示輸入法圖示的方法
- 大批次引數輸入查詢處理
- Android 橫屏時禁止輸入法全屏Android
- Android開啟和關閉輸入法Android
- Ubuntu下搜狗輸入法無法輸入中文Ubuntu
- win10中文輸入法與遊戲衝突如何解決_win10系統輸入法和遊戲衝突怎麼處理Win10遊戲
- win10輸入法消失怎麼恢復_win10更新輸入法不見了解決方法Win10
- win10系統輸入法不見了只能輸入英文怎麼解決Win10
- win10輸入框無法貼上怎麼處理 win10輸入框不能貼上如何修復Win10
- vm安裝win10 鍵盤無法輸入如何處理_vm安裝win10鍵盤無法輸入怎麼解決Win10
- Win10微軟輸入法為什麼打不出漢字 win10系統微軟輸入法打不出來漢字如何處理Win10微軟
- win10新視窗自動開啟輸入法怎麼辦 win10新視窗自動跳出輸入法處理方法Win10
- Win10電腦輸入法切換不了如何處理 win10系統切換不了輸入法的解決步驟Win10