2015-09-06 4 views
0

я, имеющий активность с компонентом ListView, где каждый ряд имеет что-то вроде EditText1, EditText2, EditText3, CheckBox1Android «Focusable в режиме касания» флаг случайного поведения

Все эти компоненты создание и добавление LinearLayout программно в методе GetView ... Также редактора, создающие включены или отключен из-за программную логику:

editor.setEnabled(field.isEditable()); 

Ну, первоначально все редакторами во всех строках и столбцах имели хороший фокус свойство

-

isFocusable: правда, isFocusableInTouchMode: истинный

Но затем я добавил код, чтобы явно установить фокусируемости для редакторов:

editor.setEnabled(field.isEditable()); 

editor.setFocusable(field.isEditable()); 

после этого редакторы производящего странным образом: некоторые из них имеют и сосредоточиться на свойства

isFocusable: правда, isFocusableInTouchMode: истинный

, но некоторые из них без создания фокуса в сенсорном режиме:

isFocusable: правда, isFocusableInTouchMode: ложные

так, то у меня возникают проблемы при вызове requestFocus();

Почему вид пользовательского интерфейса может приобрести такое неопределенное поведение с isFocusableInTouchMode() - "соседа" на isFocusable() флаг, когда я программно задать ему setFocusable() с истинного параметра?

ответ

0

Ну, кажется, ListView не делает новый вид каждый раз, и, например, если я могу видеть на весь экран

row1 
row2 (not focusable) 
row3 
row4 
row5 

тогда, когда я прокрутите вниз до

row6 
row7 <-- 
row8 
row9 
row10 

строка 7 наследует все свойства строки2. Кажется, что строки, созданные на экране, повторно используются в качестве шаблона для рисования всех других строк. Продолжение погружения в основы ListView

Смежные вопросы