Finora ho impiegato circa 6 ore su questo argomento e non ho incontrato altro che blocchi stradali. La premessa generale è che c'è una riga in a ListView
(sia che sia generata dall'adattatore o aggiunta come vista di intestazione) che contiene un EditText
widget e un file Button
. Tutto quello che voglio fare è essere in grado di utilizzare il jogball / frecce, per navigare il selettore su singoli elementi come al solito, ma quando arrivo a una riga particolare - anche se devo identificare esplicitamente la riga - che ha un focusable bambino, voglio che quel bambino si concentri invece di indicare la posizione con il selettore.
Ho provato molte possibilità e finora non ho avuto fortuna.
disposizione:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Visualizzazione intestazione:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
Supponendo che ci siano altri elementi nell'adattatore, l'utilizzo dei tasti freccia sposterà la selezione su / giù nell'elenco, come previsto; ma quando si arriva alla riga di intestazione, viene visualizzata anche con il selettore e non è possibile concentrarsi EditText
sull'uso del jogball. Nota: toccando il si EditText
metterà a fuoco a quel punto, tuttavia ciò si basa su un touchscreen, che non dovrebbe essere un requisito.
ListView
apparentemente ha due modalità a questo proposito:
1 setItemsCanFocus(true)
.: il selettore non viene mai visualizzato, ma EditText
può essere messo a fuoco quando si usano le frecce. L'algoritmo di ricerca dello stato attivo è difficile da prevedere e nessun feedback visivo (su nessuna riga: avere figli attivabili o meno) sull'elemento selezionato, entrambi possono offrire all'utente un'esperienza inaspettata.
2 setItemsCanFocus(false)
.: il selettore viene sempre disegnato in modalità non touch e EditText
non può mai essere messo a fuoco, anche se lo tocchi.
A peggiorare le cose, la chiamata editTextView.requestFocus()
restituisce true, ma in realtà non fornisce lo stato attivo EditText.
Quello che sto immaginando è fondamentalmente un ibrido di 1 e 2, dove invece dell'impostazione dell'elenco se tutti gli elementi sono attivabili o meno, voglio impostare la focalizzazione per un singolo elemento nell'elenco, in modo che il selettore passi senza problemi dalla selezione del intera riga per gli elementi non attivabili e attraversando l'albero del focus per gli elementi che contengono elementi secondari attivabili.
Eventuali acquirenti?