提问者:小点点

Android Studio:布局难以理解的定位


我已经尝试了很长时间,但是我不明白为什么“layout3”扩展到根元素的边缘,而不是像我希望的那样扩展到“layout2”的右边缘。 以下是XML代码:

<?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"
android:orientation="vertical"
android:layout_marginBottom="50dp"
android:id="@+id/layout1">

<TextView
    android:layout_width="224dp"
    android:layout_height="159dp"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="184dp"
    app:layout_constraintVertical_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    android:id="@+id/textview1"/>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/textview1"
    android:layout_marginTop="20dp"
    app:layout_constraintStart_toStartOf="@id/layout1"
    app:layout_constraintEnd_toEndOf="@id/layout1"
    android:layout_marginEnd="500dp"
    android:id="@+id/layout2">

    <TextView
        android:layout_width="224dp"
        android:layout_height="159dp"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_marginStart="20dp"
        android:id="@+id/textview2"/>

</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    app:layout_constraintTop_toBottomOf="@+id/textview1"
    android:layout_marginTop="20dp"
    app:layout_constraintStart_toEndOf="@id/layout2"
    app:layout_constraintEnd_toEndOf="@id/layout1"
    android:id="@+id/layout3">

</LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>


共1个答案

匿名用户

Layout3中有以下内容:

app:layout_constraintEnd_toEndOf="@id/layout1"

这将使Layout3的结尾绑定到Layout1的结尾,而不是Layout2的结尾。 如果要将Layout3的末尾绑定到Layout2,则需要:

app:layout_constraintEnd_toEndOf="@id/layout2"