【问题标题】:Android ConstraintLayout vertical weight is displayed incorrectAndroid ConstraintLayout 垂直权重显示不正确
【发布时间】:2019-01-15 14:42:17
【问题描述】:

我正在尝试制作一个应该如下所示的布局:

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

我的代码是:

<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 (textView_Holiday) 的高度设置为“match_parent”或“wrap_content”时,我可以看到,除了我刚刚更改的 TextView 之外,布局几乎正确显示。 我认为垂直链有一些错误,但我看不到我做错了什么。

【问题讨论】:

  • 我把你的代码放到我的工作室,它工作正常。

标签: android xml android-layout android-constraintlayout


【解决方案1】:

只需在项目的 build.gradle (Module: app) 文件中检查,在您包含的依赖项下:

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

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

此外,请确保提供父布局,即 ConstraintLayout(当您使用 ConstraintLayout 时):

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

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

【讨论】:

  • 奇怪...我将依赖项从 1.0.2 更新到 1.1.2,现在可以了。谢谢!
猜你喜欢
  • 2017-09-03
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
相关资源
最近更新 更多