Roman
- Forum-Beiträge: 20
25.09.2012, 20:14:52 via Website
25.09.2012 20:14:52 via Website
Hallo zusammen,
Beim Experimentieren mit <include> habe ich eine Ansicht mit 2 TextViews und einer SeekBar in ein .xml ausgelagert, die dann 4mal per Include in das Haupt-Layout eingebunden wird.
Wenn sie die beiden TVs und die SB in zB einem LinearLayout befinden, kann ich durch Überschreiben der ID des Root-Elements, also in dem Fall des LinearLayouts, später auf die TVs und die SBs zugreifen.
Das ausgelagerte Layout sieht ja dann in etwa so aus (ausgelagert.xml):
Der Aufruf folgt dann im "Haupt-Layout"
Der Zugriff auf die einzelnen Elemente erfolgt ja jetzt quasi über die vergebenen IDs beim Include. Also z.B.
Soweit ich die Theorie hier verstanden habe, kann ich im Include-Tag alle Layout-Eigenschaften überschreiben, die im Root-Elemtent des einzufügenden Layouts enthalten sind.
Da man ja aber auf viele verschachtelte Layouts verzichten soll, habe ich das LinearLayout im ausgelagerten .xml durch ein Merge als Wurzel-Element ersetzt und kann die einzelnen TextViews und SeekBars der eingefügten Layouts nicht mehr unterschieden, da <merge> keine ID enthalten kann.
Wie kann ich die mehrfach eingefügten TextViews und SeekBars jetzt noch unterscheiden? Irgendwie muss das ja möglich sein, ansonsten wäre das Includen über <merge> ja nicht mehrfach möglich und insofern nicht so prickelnd oder anders ausgedrückt - das mehrfache Includen wäre nur in Verbindung mit vielen verschachtelten Layouts möglich.
Schöne Grüße,
Roman
Beim Experimentieren mit <include> habe ich eine Ansicht mit 2 TextViews und einer SeekBar in ein .xml ausgelagert, die dann 4mal per Include in das Haupt-Layout eingebunden wird.
Wenn sie die beiden TVs und die SB in zB einem LinearLayout befinden, kann ich durch Überschreiben der ID des Root-Elements, also in dem Fall des LinearLayouts, später auf die TVs und die SBs zugreifen.
Das ausgelagerte Layout sieht ja dann in etwa so aus (ausgelagert.xml):
1<LinearLayout xmlns:...
2 android:id="@+id/ll_eingebundenes_layout"
3[...]
4<TextView
5 android:id="@+id/tv_einetextview"
6[...]
7<SeekBar
8 android:id="@+id/sb_dieseekbar"
9[...]
10<TextView
11 android:id="@+id/tv_nocheinetextview"
12[...]
2 android:id="@+id/ll_eingebundenes_layout"
3[...]
4<TextView
5 android:id="@+id/tv_einetextview"
6[...]
7<SeekBar
8 android:id="@+id/sb_dieseekbar"
9[...]
10<TextView
11 android:id="@+id/tv_nocheinetextview"
12[...]
Der Aufruf folgt dann im "Haupt-Layout"
1[...]
2<include
3 android:id="@+id/erster_import"
4 layout="@layout/ausgelagert"
5[...]
6<include
7 android:id="@+id/zweiter_import"
8 layout="@layout/ausgelagert"
9[usw.]
2<include
3 android:id="@+id/erster_import"
4 layout="@layout/ausgelagert"
5[...]
6<include
7 android:id="@+id/zweiter_import"
8 layout="@layout/ausgelagert"
9[usw.]
Der Zugriff auf die einzelnen Elemente erfolgt ja jetzt quasi über die vergebenen IDs beim Include. Also z.B.
1View v_ersterImport = findViewById(R.id.erster_import);
2TextView tv_ersteTVersterImport = (TextView) v_ersterImport.findViewById(R.id.tv_eine_textview);
2TextView tv_ersteTVersterImport = (TextView) v_ersterImport.findViewById(R.id.tv_eine_textview);
Soweit ich die Theorie hier verstanden habe, kann ich im Include-Tag alle Layout-Eigenschaften überschreiben, die im Root-Elemtent des einzufügenden Layouts enthalten sind.
Da man ja aber auf viele verschachtelte Layouts verzichten soll, habe ich das LinearLayout im ausgelagerten .xml durch ein Merge als Wurzel-Element ersetzt und kann die einzelnen TextViews und SeekBars der eingefügten Layouts nicht mehr unterschieden, da <merge> keine ID enthalten kann.
Wie kann ich die mehrfach eingefügten TextViews und SeekBars jetzt noch unterscheiden? Irgendwie muss das ja möglich sein, ansonsten wäre das Includen über <merge> ja nicht mehrfach möglich und insofern nicht so prickelnd oder anders ausgedrückt - das mehrfache Includen wäre nur in Verbindung mit vielen verschachtelten Layouts möglich.
Schöne Grüße,
Roman