Идентификатор тега <include>уничтожает макет - PullRequest
1 голос
/ 19 мая 2019

У меня есть макет в отдельном XML-файле, который включается в другие файлы.Я хочу сослаться на включенный файл, поэтому я установил идентификатор.Но с идентификатором макет становится полностью неструктурированным.Мини-пример:

Родительский макет:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/test_include" />

</android.support.constraint.ConstraintLayout>

Включенный макет:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/constraint_parent"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/t1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="1"
    app:layout_constraintEnd_toStartOf="@id/t2"
    app:layout_constraintStart_toStartOf="@id/constraint_parent" />

<TextView
    android:id="@+id/t2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="2"
    app:layout_constraintEnd_toStartOf="@id/t3"
    app:layout_constraintStart_toEndOf="@id/t1" />

<TextView
    android:id="@+id/t3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="3"
    app:layout_constraintStart_toEndOf="@id/t2"
    app:layout_constraintEnd_toEndOf="@id/constraint_parent"/>

В результате получится следующий формат: Include without id

Но если я изменю тег включения на следующий:

<include
    android:id="@+id/test"
    layout="@layout/test_include" />

Результат будет: Include with id

Таким образом, макет полностью теряется.Разве невозможно добавить идентификатор для тега включения?Я хочу добавить тег include два раза, поэтому я хочу добавить два разных идентификатора к двум include вместо прямой ссылки на родительский макет включенного макета.

Ответы [ 2 ]

1 голос
/ 19 мая 2019

проблема во включенном макете, используйте вместо этого xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/constraint_parent"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/t1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="1"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toStartOf="@id/t2"
    app:layout_constraintStart_toStartOf="parent" />

 <TextView
    android:id="@+id/t2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="2"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toStartOf="@id/t3"
    app:layout_constraintStart_toEndOf="@id/t1" />

 <TextView
    android:id="@+id/t3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:text="3"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintStart_toEndOf="@id/t2"
    app:layout_constraintEnd_toEndOf="parent"/>
 </android.support.constraint.ConstraintLayout>
0 голосов
/ 19 мая 2019

Это действительно странно. Попробуйте добавить layout_width и layout_height в тег включения, который может исправить это странное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...