【发布时间】:2020-06-05 19:15:41
【问题描述】:
我有 3 个文本视图,其中的文本可以动态更改,我需要使它们彼此相等,它们的高度大于该高度并占据所有位置。我正在尝试使用障碍但没有得到积极的结果,我也尝试将所有 textviews 高度设置为 0dp 但所有 textviews 然后都消失了,我可以为一个 textview wrap_content 和另一个 0dp 设置高度,但它们将仅在第一个文本视图。当我使用线性布局时,我做到了,但使用约束布局我不明白怎么做。
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">
<TextView
android:id="@+id/label_zone1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="15dp"
android:fontFamily="@font/gothic_bold"
android:gravity="center"
android:text="test 1"
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="18sp"
app:layout_constraintEnd_toStartOf="@+id/label_zone2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/coefficient_zone1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="@font/gothic"
android:gravity="center"
android:text="text="
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/label_zone1"
app:layout_constraintStart_toStartOf="@+id/label_zone1"
app:layout_constraintTop_toBottomOf="@+id/label_zone1" />
<TextView
android:id="@+id/consumption_zone1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/input_border"
android:fontFamily="@font/gothic"
android:gravity="center|center_vertical"
android:text="1234567"
android:textColor="@color/orange"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="@+id/barrier2"
app:layout_constraintEnd_toEndOf="@+id/coefficient_zone1"
app:layout_constraintStart_toStartOf="@+id/coefficient_zone1"
app:layout_constraintTop_toBottomOf="@+id/barrier" />
<TextView
android:id="@+id/label_zone2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:fontFamily="@font/gothic_bold"
android:gravity="center"
android:text="test 2"
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="18sp"
app:layout_constraintEnd_toStartOf="@+id/label_zone3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@+id/label_zone1"
app:layout_constraintTop_toTopOf="@+id/label_zone1" />
<TextView
android:id="@+id/coefficient_zone2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="@font/gothic"
android:gravity="center"
android:text="text="
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/label_zone2"
app:layout_constraintStart_toStartOf="@+id/label_zone2"
app:layout_constraintTop_toBottomOf="@+id/label_zone2" />
<TextView
android:id="@+id/consumption_zone2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/input_border"
android:fontFamily="@font/gothic"
android:gravity="center|center_vertical"
android:text="1234567"
android:textColor="@color/orange"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="@+id/barrier2"
app:layout_constraintEnd_toEndOf="@+id/coefficient_zone2"
app:layout_constraintStart_toStartOf="@+id/coefficient_zone2"
app:layout_constraintTop_toBottomOf="@+id/barrier" />
<TextView
android:id="@+id/label_zone3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:fontFamily="@font/gothic_bold"
android:gravity="center"
android:text="test 3"
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@+id/label_zone2"
app:layout_constraintTop_toTopOf="@+id/label_zone2" />
<TextView
android:id="@+id/coefficient_zone3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fontFamily="@font/gothic"
android:gravity="center"
android:text="text="
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/label_zone3"
app:layout_constraintStart_toStartOf="@+id/label_zone3"
app:layout_constraintTop_toBottomOf="@+id/label_zone3" />
<TextView
android:id="@+id/consumption_zone3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/input_border"
android:fontFamily="@font/gothic"
android:gravity="center|center_vertical"
android:text="12345678"
android:textColor="@color/orange"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="@+id/barrier2"
app:layout_constraintEnd_toEndOf="@+id/coefficient_zone3"
app:layout_constraintStart_toStartOf="@+id/coefficient_zone3"
app:layout_constraintTop_toBottomOf="@+id/barrier" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="coefficient_zone1,coefficient_zone2,coefficient_zone3" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="consumption_zone1,consumption_zone2,consumption_zone3" />
<TextView
android:id="@+id/label_calculated_indicators"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:fontFamily="@font/gothic_bold"
android:gravity="center"
android:text="title title title title"
android:textAllCaps="true"
android:textColor="@color/blue"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="@+id/label_zone3"
app:layout_constraintStart_toStartOf="@+id/label_zone1"
app:layout_constraintTop_toBottomOf="@+id/consumption_zone1" />
</androidx.constraintlayout.widget.ConstraintLayout>
【问题讨论】:
-
在 SO 中有很多像您这样的问题,其中需要基于动态变化视图的障碍,但没有一个仅使用 ConstraintLayout 提供答案。它们要么嵌套 LinearLayout,要么使用不可见的辅助视图作为参考。我有兴趣看到一个尊重 ConstraintLayout 平坦性的可靠解决方案,同时它看起来不像是一个 hack-ey 解决方法。
标签: android textview android-constraintlayout