Android ConstraintLayout垂直权重显示不正确

时间:2018-08-08 10:53:24

标签: android xml android-layout android-constraintlayout

我正在尝试制作一个看起来像这样的布局:

Layout how it should be

我当前正在使用ConstraintLayout,因此可以使用“ weight”属性缩放TextViews。但是底部的TextView引起了问题。我已经将所有约束设置为应该的样子,并且还将每个高度和宽度都设置为0dp,并相应地设置了weigths。

我的代码是:

<TextView
    android:id="@+id/list_Holiday"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="4"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/list_OffHours"
    app:layout_constraintVertical_weight="1" />


<TextView
    android:id="@+id/list_SWG"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_Holiday"
    app:layout_constraintEnd_toStartOf="@id/list_KUG"
    app:layout_constraintHorizontal_chainStyle="spread_inside"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_weight="2" />


<TextView
    android:id="@+id/list_KUG"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_Holiday"
    app:layout_constraintEnd_toStartOf="@id/list_ExtraHours"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@id/list_SWG"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_weight="2" />

<TextView
    android:id="@+id/list_ExtraHours"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_OffHours"
    app:layout_constraintEnd_toStartOf="@id/list_SHours"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@id/list_KUG"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_weight="1" />

<TextView
    android:id="@+id/list_OffHours"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:gravity="center_vertical"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_Holiday"
    app:layout_constraintEnd_toStartOf="@id/list_FHours"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@id/list_KUG"
    app:layout_constraintTop_toBottomOf="@id/list_ExtraHours"
    app:layout_constraintVertical_weight="1" />

<TextView
    android:id="@+id/list_SHours"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_FHours"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@id/list_ExtraHours"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_weight="1" />

<TextView
    android:id="@+id/list_FHours"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:gravity="center"
    android:text="test"
    android:textColor="@color/colorBlack"
    app:layout_constraintBottom_toTopOf="@id/list_Holiday"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintStart_toEndOf="@id/list_OffHours"
    app:layout_constraintTop_toBottomOf="@id/list_SHours"
    app:layout_constraintVertical_weight="1" />

位于ConstraintLayout内。问题是布局根本不显示。当我将底部(TextView_Holiday)的TextView的高度设置为“ match_parent”或“ wrap_content”时,可以看到,除了我刚刚更改的TextView之外,布局几乎可以正确显示。 我认为垂直链存在一些错误,但我看不到哪里做错了。

1 个答案:

答案 0 :(得分:1)

只需检查项目所包含的依赖项下的build.gradle(模块:app)文件中的内容即可

implementation 'com.android.support.constraint:constraint-layout:1.1.2'

(即ConstraintLayout的依赖项),然后再次构建您的项目。

此外,请确保已给出父布局,即ConstraintLayout(使用ConstraintLayout时):

android:layout_width="match_parent"
android:layout_height="match_parent"

如果这不起作用,请发布您的完整代码,我会尽力为您提供进一步的帮助。