Я потратил около 6 часов на это до сих пор и ничего не сделал, кроме блокпостов. Общая предпосылка заключается в том, что существует некоторая строка в ListView
(независимо от того, сгенерирована ли она адаптером или добавлена в виде заголовка), которая содержит виджет EditText
и Button
. Все, что я хочу сделать, это использовать jogball/стрелки для перемещения селектора к отдельным элементам, как обычно, но когда я попадаю в определенную строку - даже если мне нужно явно идентифицировать строку - child, я хочу, чтобы этот ребенок делал фокус вместо указания позиции с помощью селектора.
Я пробовал много возможностей и до сих пор не повезло.
расположение:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Вид заголовка:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
Предполагая, что в адаптере есть другие элементы, с помощью клавиш со стрелками переместите выделение вверх/вниз в списке, как и ожидалось; но когда вы попадаете в строку заголовка, она также отображается вместе с селектором и не может сфокусироваться на EditText
с помощью jogball. Примечание: нажатие на EditText
будет сфокусировано на этой точке, однако это зависит от сенсорного экрана, который не должен быть требованием.
ListView
, по-видимому, имеет два режима в этом отношении:
1. setItemsCanFocus(true)
: селектор никогда не отображается, но EditText
может получить фокус при использовании стрелок. Фокусный алгоритм поиска трудно предсказать, и нет визуальной обратной связи (по любым строкам: с помощью фокусных детей или нет), на котором выбран элемент, оба из которых могут дать пользователю неожиданный опыт.
2. setItemsCanFocus(false)
: селектор всегда отображается в режиме без касания, а EditText
никогда не может фокусироваться - даже если вы нажмете на него.
Хуже того, вызов editTextView.requestFocus()
возвращает true, но на самом деле не дает фокуса EditText.
То, что я представляю, в основном представляет собой гибрид 1 и 2, где вместо настройки списка, если все элементы являются настраиваемыми или нет, я хочу установить фокусировку для одного элемента в списке, чтобы селектор плавно переходил от выбора всей строки для не-фокусируемых элементов и перемещения дерева фокуса для элементов, содержащих сфокусирующиеся дочерние элементы.
Любые участники?