Перенос элемента, если не помещается справа

Есть некоторая разметка ниже:

<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:huami="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/g_center_y"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        huami:layout_constraintGuide_percent="0.5" />

    <LinearLayout
        android:id="@+id/dpLayout"
        android:layout_width="0.0dip"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        huami:layout_constraintBottom_toTopOf="@id/g_center_y"
        huami:layout_constraintEnd_toStartOf="@id/lightLayout"
        huami:layout_constraintHorizontal_weight="1.0"
        huami:layout_constraintStart_toStartOf="parent"
        huami:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@id/dpDurationTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="19.0sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8.0dip"
            android:drawableStart="@drawable/slp_info_rect_deep"
            android:drawablePadding="4.0dip"
            android:text="@string/sleep_subview_deep_sleep"
            android:textColor="@color/black_60"
            android:textSize="12.0sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lightLayout"
        android:layout_width="0.0dip"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        huami:layout_constraintBottom_toTopOf="@id/g_center_y"
        huami:layout_constraintEnd_toEndOf="parent"
        huami:layout_constraintHorizontal_weight="1.0"
        huami:layout_constraintStart_toEndOf="@id/dpLayout"
        huami:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@id/lightDurationTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="19.0sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8.0dip"
            android:drawableStart="@drawable/slp_info_rect_light"
            android:drawablePadding="4.0dip"
            android:text="@string/sleep_subview_light_sleep"
            android:textColor="@color/black_60"
            android:textSize="12.0sp" />

    </LinearLayout>

    <LinearLayout
        android:id="@id/remLayout"
        android:layout_width="0.0dip"
        android:layout_height="wrap_content"
        android:layout_marginTop="7.0dip"
        android:orientation="vertical"
        huami:layout_constraintEnd_toStartOf="@id/wakeLayout"
        huami:layout_constraintHorizontal_weight="1.0"
        huami:layout_constraintStart_toStartOf="parent"
        huami:layout_constraintTop_toBottomOf="@id/g_center_y">

        <TextView
            android:id="@id/remDurationTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="19.0sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8.0dip"
            android:drawableStart="@drawable/slp_info_rect_rem"
            android:drawablePadding="4.0dip"
            android:text="@string/sleep_subview_rem_sleep"
            android:textColor="@color/black_60"
            android:textSize="12.0sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/wakeLayout"
        android:layout_width="0.0dip"
        android:layout_height="wrap_content"
        android:layout_marginTop="7.0dip"
        android:orientation="vertical"
        huami:layout_constraintEnd_toEndOf="parent"
        huami:layout_constraintHorizontal_weight="1.0"
        huami:layout_constraintStart_toEndOf="@id/remLayout"
        huami:layout_constraintTop_toBottomOf="@id/g_center_y">

        <TextView
            android:id="@id/wakeDurationTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:textSize="19.0sp" />

        <TextView
            android:id="@+id/titleTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8.0dip"
            android:drawableStart="@drawable/slp_info_rect_wake"
            android:drawablePadding="4.0dip"
            android:text="@string/sleep_subview_awake_sleep"
            android:textColor="@color/black_60"
            android:textSize="12.0sp" />

    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>```

Необходимо после блока wakeLayout добавить такой же блок, чтобы он отображался справа, если блок remLayout скрыт (GONE) (это может быть из-за условий кода) или ниже, если блок remLayout отображается. Средствами одной разметки это можно сделать? Если я добавляю такой блок в конец:

<LinearLayout
    android:id="@+id/tocLayout"
    android:layout_width="0.0dip"
    android:layout_height="wrap_content"
    android:layout_marginTop="7.0dip"
    android:orientation="vertical"
    huami:layout_constraintHorizontal_weight="1"
    huami:layout_constraintStart_toEndOf="@id/wakeLayout"
    huami:layout_constraintTop_toBottomOf="@id/g_center_y">

    <TextView
        android:id="@id/turnOverCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="19.0sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8.0dip"
        android:drawableStart="@drawable/slp_info_rect_turn_over"
        android:drawablePadding="4.0dip"
        android:text="@string/sleep_3_turn_over"
        android:textColor="@color/black_60"
        android:textSize="12.0sp" />

</LinearLayout>

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


Ответы (1 шт):

Автор решения: Arty Morris

Необходимо добавить Linearlayout c атрибутом android:orientation="horizontal". Вы получите слой, в котором снова создайте два Linearlayout с атрибутом android:orientation="vertical".

В них уже используйте атрибут android:weight="0" или "1", а так же android:layout_width="wrap_content" или android:layout_width="match_parent"

→ Ссылка