【Android】ListView中EditText焦點問題
SkySeraph Apr. 21st 2013
Email:skyseraph00@163.com
一、描述:
近期一個項目中需要開發一種類似表格的界面來顯示和配置參數,Android並無直接類似表格的控件支持,我采用了ListView中布局EditText和TextView來實現,其中TextView用來顯示參數表示符,EditText用來顯示參數值,用一個自定義AlertDialog彈出顯示,如下圖所示。
二、問題:
開發出來的APK軟件,在手機上操控是OK的,但在電視上無法操控,具體表現為:
三、解決:
1 通過設置focus停在ListView上,解決ListView無法點擊的問題。方法如下
2 關於問題2和3,本身和1就是互斥的,例如我將焦點手動設置到EditText上,此時無法響應點擊ListView,更要命的,邏輯完全混亂,例如我按向下鍵時,光標停留在第一欄,而焦點已經已跟隨遙控移動到了 下一欄,此時按OK鍵,修改的還是光標停留的那一欄的數據,如圖3所示。 最終經過反復嘗試,下述解決方法得以解決。
解決方法:在ListView中setOnItemSelectedListener的onItemSelected 和 onNothingSelected分別輸入下述代碼
3 關於問題4,無法調出輸入法問題,網上介紹的零零總總,絕大部分都是無用的,僅有一種方法是OK,原文鏈接在這,解決方法如下:
四、說明:
1 關於android:descendantFocusability,有三個屬性值,簡述如下表,詳述可參考這篇博文說明。
beforeDescendants |
viewgroup會優先其子類控件而獲取到焦點 |
afterDescendants |
viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點 |
blocksDescendants |
viewgroup會覆蓋子類控件而直接獲得焦點 |