Пока я потратил около 6 часов на это, и ничего не делал, кроме блокпостов.Общая предпосылка заключается в том, что в ListView
есть некоторая строка (независимо от того, сгенерирована ли она адаптером или добавлена в качестве представления заголовка), которая содержит виджет EditText
и Button
.Все, что я хочу сделать, это уметь использовать джогбол / стрелки, чтобы перемещать селектор по отдельным элементам, как обычно, но когда я добираюсь до определенной строки - даже если мне нужно явно идентифицировать строку - которая имеет фокусируемыйДитя, я хочу, чтобы этот ребенок сфокусировался, а не указывал положение селектором.
Я испробовал много возможностей, и до сих пор не получилось.
макет:
<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
с помощью джогбола.Примечание: при нажатии EditText
будет фокусироваться на этом месте, однако это зависит от сенсорного экрана, что не является обязательным требованием.
ListView
, по-видимому, имеет два режима в этомОбратите внимание:
1. setItemsCanFocus(true)
: селектор никогда не отображается, но EditText
может получить фокус при использовании стрелок.Алгоритм поиска фокуса трудно предсказать, и нет никакой визуальной обратной связи (по любым строкам: наличие фокусируемых дочерних элементов или нет) о том, какой элемент выбран, и то и другое может дать пользователю неожиданный опыт.
2. setItemsCanFocus(false)
: селекторвсегда рисуется в режиме без касания, и EditText
никогда не может сфокусироваться - даже если вы нажмете на него.
Что еще хуже, вызов editTextView.requestFocus()
возвращает true, но на самом деле это не таксфокусировать EditText.
То, что я предполагаю, в основном представляет собой гибрид 1 & 2, где вместо настройки списка, если все элементы являются фокусируемыми или нет, я хочу установить фокусируемостьдля одного элемента в списке, чтобы селектор плавно переходил от выбора всей строки для нефокусируемых элементов и обхода дерева фокуса для элементов, содержащих фокусируемые дочерние элементы.
Любойберущая