Come faccio a fare riferimento a un elemento XML successivo?Elemento xml di riferimento layout Android più avanti nel file
Ecco un caso d'uso specifico. Diciamo che ho un modulo con una LinearLayout di root, contenente LinearLayouts per più righe, ogni riga ha una o più aree di input del testo.
Ecco un'immagine di ciò che sto cercando. La prima immagine proviene dall'app di Venmo, la seconda è il rendering del seguente XML.
Tale disposizione potrebbe essere la seguente:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/row_card_number"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/card_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nextFocusDown="@id/month"/>
</LinearLayout>
<LinearLayout
android:id="@+id/row_date"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/month"
android:layout_height="wrap_content"
android:layout_width="100dp"
android:nextFocusDown="@id/year"/>
<EditText
android:id="@+id/year"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
</LinearLayout>
</LinearLayout>
In questo caso l'uso, riferimento in avanti è necassary al fine di impostare l'elemento attivo successivo. In questo modo, quando si preme il pulsante successivo sulla tastiera, verrà visualizzata la vista corretta. In questo esempio xml, senza lo nextFocusDown
s, premendo next si passerebbe da un nome all'altro e non si passerebbe mai all'anno.
Tuttavia, se si tenta di compilare questo, si otterrà un errore:
Error:(18, 36) No resource found that matches the given name (at 'nextFocusDown' with value '@id/month').
Questo perché l'id month
non è ancora stato inizializzato quando sto cercando di farvi riferimento, dato che è più tardi nel file. Come posso fare riferimento a un ID in xml che appare più avanti nel file?
Questo è un self risposto alla domanda. Non ho trovato nulla che spiegasse questo, quindi ho pensato di farlo da solo. Suggerimenti per il miglioramento sono i benvenuti :) –