Я потратил на это около 6 часов и не наткнулся ни на какие препятствия. Общая предпосылка заключается в том, что в элементе ListView(независимо от того, создается ли он адаптером или добавляется в виде заголовка) есть строка , содержащая EditTextвиджет и файл Button. Все, что я хочу сделать, это иметь возможность использовать джогбол / стрелки для перемещения селектора к отдельным элементам, как обычно, но когда я перехожу к определенной строке - даже если мне нужно явно идентифицировать строку - у которой есть фокусируемый 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, где вместо настройки списка, если все элементы являются фокусируемыми или нет, я хочу установить фокусируемость для одного элемента в списке, чтобы селектор плавно переходил от выбора целая строка для не фокусируемых элементов и обход дерева фокуса для элементов, которые содержат фокусируемые дочерние элементы.
Есть берущие?