Wie referenziere ich ein späteres XML-Element?Android-Layout-Referenz XML-Element später in Datei
Hier ist ein spezifischer Anwendungsfall. Nehmen wir an, ich habe ein Formular mit einem Root-LinearLayout, das LinearLayouts für mehrere Zeilen enthält, wobei jede Zeile einen oder mehrere Texteingabebereiche hat.
Hier ist ein Bild von dem, was ich anstrebe. Das erste Bild stammt von Venmos App, das zweite ist ein Rendering des folgenden XML.
Ein solches Layout könnte wie folgt aussehen:
<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 diesem Anwendungsfall vorwärts Referenzierung necassary, um die nächste Fokuselement einzustellen. Auf diese Weise wird beim Drücken der nächsten Taste auf der Tastatur die richtige Ansicht angezeigt. In diesem Beispiel xml, ohne die nextFocusDown
s, würde die nächste drücken von Name zu Monat gehen, und nie zu Jahr gehen.
Wenn Sie jedoch versuchen, dies zu kompilieren, erhalten Sie eine Fehlermeldung erhalten:
Error:(18, 36) No resource found that matches the given name (at 'nextFocusDown' with value '@id/month').
Dies liegt daran, die ID month
noch nicht initialisiert wurde, wenn ich es zu verweisen bin versucht, denn das ist, später in der Datei. Wie kann ich auf eine ID in XML verweisen, die später in der Datei angezeigt wird?
Dies ist eine selbst beantworteten Frage. Ich habe nicht wirklich etwas gefunden, was das gut erklärt hat, also dachte ich, ich würde es selbst machen. Verbesserungsvorschläge sind willkommen :) –