垂直对齐两个 TextView,使它们的宽度完全相同
Align two TextViews vertically so they are the exact same width
如果我有两个垂直对齐的文本视图,其中一个或另一个可以包含较长的文本,我如何垂直对齐它们,使它们的背景图像看起来像是两个文本视图的一个完整背景(所以一个大盒子无论这些视图中的哪一个包含更长的文本)
原因是我在图片的顶部使用了 textview,但需要对它们进行阴影处理以防图片与 textview 的颜色相同
更新:
正如评论所建议的那样,我现在使用了这样的线性布局,但现在文本视图之间存在非常小的间隙,而 ConstraintLayout 则没有。知道如何解决吗?
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginEnd="10dp">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_overlay_top"
android:paddingStart="6dp"
android:paddingTop="6dp"
android:paddingEnd="6dp"
android:text="TextView1"
android:textColor="?colorOnPrimary"
android:textSize="13sp"/>
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:background="@drawable/bg_overlay_bottom"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:paddingBottom="6dp"
android:text="TextVie2 long"
android:textColor="?attr/colorOnPrimary"
android:textSize="16sp"
android:textStyle="bold"/>
</androidx.appcompat.widget.LinearLayoutCompat>
更新 2
我现在使用完整的图像作为线性布局的背景,但遗憾的是这个解决方案也不起作用,线性布局只限制了下方的文本视图,这意味着如果下方比上方短,则上面的被截断了
如果您使用的是约束布局,那么
app:layout_constraintStart_toStartOf
会为您工作,使用 baseline
也会非常有用。
如果您使用的是垂直 LinearLayout,则可以将 android:layout_width(TextView 的)设置为“match_parent”而不是“wrap_content”。
编辑:在外部垂直 LinearLayout 中放置另一个 android:layout_width="wrap_content" 的垂直 LinearLayout 和 android:layout_width="match_parent" 的 2 个 TextView
对于你说的大蓝色背景,你可以使用垂直的LinearLayout作为两个TextView的容器,并将其背景颜色设置为蓝色。
以下是如何让两个 TextViews 具有相同的宽度,而不管哪个视图的文本较长。
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:text="Here is some long, long text."
android:textSize="28sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/barrierEnd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_min="wrap" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:gravity="center"
android:text="Bottom"
android:textSize="28sp"
app:layout_constraintEnd_toEndOf="@id/barrierEnd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
app:layout_constraintWidth_min="wrap" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrierEnd"
android:layout_width="0dp"
android:layout_height="0dp"
app:barrierDirection="end"
app:constraint_referenced_ids="textView1,textView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
此解决方案借鉴自 . I took a stab at explaining why it works 。
如果我有两个垂直对齐的文本视图,其中一个或另一个可以包含较长的文本,我如何垂直对齐它们,使它们的背景图像看起来像是两个文本视图的一个完整背景(所以一个大盒子无论这些视图中的哪一个包含更长的文本)
原因是我在图片的顶部使用了 textview,但需要对它们进行阴影处理以防图片与 textview 的颜色相同
更新:
正如评论所建议的那样,我现在使用了这样的线性布局,但现在文本视图之间存在非常小的间隙,而 ConstraintLayout 则没有。知道如何解决吗?
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginEnd="10dp">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_overlay_top"
android:paddingStart="6dp"
android:paddingTop="6dp"
android:paddingEnd="6dp"
android:text="TextView1"
android:textColor="?colorOnPrimary"
android:textSize="13sp"/>
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:background="@drawable/bg_overlay_bottom"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:paddingBottom="6dp"
android:text="TextVie2 long"
android:textColor="?attr/colorOnPrimary"
android:textSize="16sp"
android:textStyle="bold"/>
</androidx.appcompat.widget.LinearLayoutCompat>
更新 2
我现在使用完整的图像作为线性布局的背景,但遗憾的是这个解决方案也不起作用,线性布局只限制了下方的文本视图,这意味着如果下方比上方短,则上面的被截断了
如果您使用的是约束布局,那么
app:layout_constraintStart_toStartOf
会为您工作,使用 baseline
也会非常有用。
如果您使用的是垂直 LinearLayout,则可以将 android:layout_width(TextView 的)设置为“match_parent”而不是“wrap_content”。
编辑:在外部垂直 LinearLayout 中放置另一个 android:layout_width="wrap_content" 的垂直 LinearLayout 和 android:layout_width="match_parent" 的 2 个 TextView
对于你说的大蓝色背景,你可以使用垂直的LinearLayout作为两个TextView的容器,并将其背景颜色设置为蓝色。
以下是如何让两个 TextViews 具有相同的宽度,而不管哪个视图的文本较长。
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:text="Here is some long, long text."
android:textSize="28sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/barrierEnd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_min="wrap" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:gravity="center"
android:text="Bottom"
android:textSize="28sp"
app:layout_constraintEnd_toEndOf="@id/barrierEnd"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
app:layout_constraintWidth_min="wrap" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrierEnd"
android:layout_width="0dp"
android:layout_height="0dp"
app:barrierDirection="end"
app:constraint_referenced_ids="textView1,textView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
此解决方案借鉴自