Jak dołączyć układ do układu w systemie Android?
Tworzę wspólny układ. Chcę umieścić ten układ na innej stronie.
Odpowiedzi:
Edycja: Jak w komentarzu, który słusznie poprosił o więcej informacji. Użyj include
tagu
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/yourlayout" />
aby uwzględnić układ, którego chcesz ponownie użyć.
Sprawdź ten link ...
<include />
tagu, jednak możesz to zrobić za pomocą kodu java. zobacz odpowiedź Phileo99 poniżej, aby dowiedzieć się, jak uzyskać odniesienie do dołączonego układu. a potem możesz zmienić jego zawartość.
Zauważ, że jeśli umieścisz android:id...
w <include />
tagu, nadpisuje on każdy identyfikator zdefiniowany w dołączonym układzie. Na przykład:
<include
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_id_if_needed"
layout="@layout/yourlayout" />
yourlayout.xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/some_other_id">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
</LinearLayout>
Następnie możesz odwołać się do tego zawartego układu w kodzie w następujący sposób:
View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
Użyj <include />
tagu.
<include
android:id="@+id/some_id_if_needed"
layout="@layout/some_layout"/>
Przeczytaj również artykuły o tworzeniu składników interfejsu użytkownika wielokrotnego użytku i scalaniu układów .
Z oficjalnych dokumentów o ponownym użyciu układów
Chociaż system Android oferuje różnorodne widżety zapewniające małe i wielokrotnego użytku elementy interaktywne, może być konieczne ponowne użycie większych komponentów, które wymagają specjalnego układu. Aby efektywnie ponownie wykorzystać kompletne układy, możesz użyć znacznika do osadzenia innego układu w bieżącym układzie.
Oto mój plik header.xml , którego mogę użyć ponownie za pomocą tagu include
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/app_name"
android:textColor="#000000" />
</RelativeLayout>
Nie, używam tag w XML, aby dodać kolejny układ z innego pliku XML.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f0f0f0" >
<include
android:id="@+id/header_VIEW"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/header" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="#ffffff"
android:orientation="vertical"
android:padding="5dp" >
</LinearLayout>
Because I want to reuse a ProgressBar
jaki problem nadchodzi?
Dowiedz się więcej, korzystając z tego linku https://developer.android.com/training/improving-layouts/reusing-layouts.html
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Game_logic">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:id="@+id/text1"
android:textStyle="bold"
tools:text="Player " />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_marginLeft="20dp"
android:id="@+id/text2"
tools:text="Player 2" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Zablokować cytat
Powyższy układ możesz wykorzystać w innej aktywności za pomocą
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SinglePlayer">
<include layout="@layout/activity_game_logic"/>
</androidx.constraintlayout.widget.ConstraintLayout>