关于xml:Android ConstraintLayout垂直权重显示不正确

Android ConstraintLayout vertical weight is displayed incorrect

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

Layout how it should be

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

我的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<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之外,布局几乎可以正确显示。
我认为垂直链存在一些错误,但是我看不到我做错了什么。


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

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

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

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

1
2
android:layout_width="match_parent"
android:layout_height="match_parent"

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