Як включити макет всередину макета в Android?
Я створюю загальний макет. Я хочу включити цей макет на іншу сторінку.
Відповіді:
Редагувати: Як і в коментарі, тут правильно запитується додаткова інформація. Використовуйте include
тег
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/yourlayout" />
щоб включити макет, який ви хочете використати повторно.
Перевірте це посилання ...
<include />
тезі, однак ви можете зробити це за допомогою коду Java. див . відповідь Phileo99 нижче, щоб дізнатися, як отримати посилання на включений макет. а потім ви можете змінити його вміст.
Зверніть увагу, що якщо ви включите android:id...
в <include />
тег, він замінить будь-який ідентифікатор, визначений всередині включеного макета. Наприклад:
<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>
Тоді ви посилаєтесь на цей включений макет у коді наступним чином:
View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);
Використовуйте <include />
тег.
<include
android:id="@+id/some_id_if_needed"
layout="@layout/some_layout"/>
Також прочитайте статті Створення компонентів інтерфейсу багаторазового використання та об’єднання макетів .
З офіційних документів про повторне використання макетів
Незважаючи на те, що Android пропонує безліч віджетів для забезпечення невеликих та повторно використовуваних інтерактивних елементів, можливо, вам також доведеться повторно використовувати більші компоненти, які потребують спеціального розташування. Для ефективного повторного використання повних макетів можна використовувати тег, щоб вбудувати інший макет у поточний макет.
Ось мій файл header.xml, який я можу використовувати повторно, використовуючи тег 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>
Ні, я використовую тег у XML, щоб додати інший макет з іншого файлу 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
яка проблема виникає?
Дізнатися більше За цим посиланням 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>
Блок-цитата
Вище макет можна використовувати в інших видах діяльності
<?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>