Do tej pory spędziłem nad tym około 6 godzin i uderzałem tylko w blokady drogowe. Ogólne założenie jest takie, że istnieje wiersz ListView
(niezależnie od tego, czy został wygenerowany przez adapter, czy dodany jako widok nagłówka), który zawiera EditText
widget i plik Button
. Chcę tylko móc użyć kulki / strzałek, aby przejść selektorem do poszczególnych elementów, tak jak zwykle, ale kiedy dojdę do określonego wiersza - nawet jeśli muszę wyraźnie zidentyfikować wiersz - ma on opcję fokusu dziecko, chcę, aby dziecko skupiło się, zamiast wskazywać pozycję za pomocą selektora.
Wypróbowałem wiele możliwości i do tej pory nie miałem szczęścia.
układ:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Widok nagłówka:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
Zakładając, że w adapterze znajdują się inne pozycje, użycie klawiszy strzałek spowoduje przesunięcie wyboru w górę / w dół listy zgodnie z oczekiwaniami; ale kiedy przechodzimy do wiersza nagłówka, jest on również wyświetlany za pomocą selektora i nie ma możliwości skupienia się na EditText
używaniu kulki. Uwaga: dotknięcie przycisku EditText
spowoduje skupienie się w tym momencie, jednak zależy to od ekranu dotykowego, co nie powinno być wymagane.
ListView
najwyraźniej ma dwa tryby w tym względzie:
1 setItemsCanFocus(true)
.: selektor nigdy nie jest wyświetlany, ale EditText
może uzyskać ostrość, gdy używasz strzałek. Algorytm wyszukiwania fokusowego jest trudny do przewidzenia i nie ma wizualnej informacji zwrotnej (w jakimkolwiek wierszu: z wybranymi elementami podrzędnymi lub nie), z których oba mogą dać użytkownikowi nieoczekiwane wrażenia.
2.setItemsCanFocus(false)
.: Selektor jest zawsze rysowany w trybie bezdotykowym i EditText
nigdy nie może uzyskać ostrości - nawet jeśli go dotkniesz.
Co gorsza, dzwonię editTextView.requestFocus()
zwraca prawdę, ale w rzeczywistości nie skupia się na EditText.
To, co wyobrażam, jest w zasadzie hybrydą 1 i 2, gdzie zamiast ustawienia listy, czy wszystkie elementy są aktywne, czy nie, chcę ustawić ostrość dla jednego elementu na liście, tak aby selektor płynnie przechodził od wyboru cały wiersz dla elementów, na które nie można skupić się, i przechodzenie przez drzewo aktywności dla elementów, które zawierają elementy podrzędne, na które można ustawić fokus.
Jacyś chętni?