我有两个彼此相邻对齐的 TextView ,如下所示: Here is the image, I am not allowed to embed it for now
如果我尝试增加第一个 TextView 的文本,我当前的布局工作正常,它仍然在应有的约束内。 Here is it how it looks这很好。
但是当我尝试做与此完全相反的事情时,即增加第二个 textView 的宽度,我希望第一个 textView 保持在原位,但同样的情况不会发生并且会溢出。 It goes out of bounds like this.
所以我不明白我做错了什么?我希望两个 textView 都能在约束范围内占据可用的任何空间。有人可以指导我哪里出错了吗? 两个 textView 都相互链接。
这是我当前的 XML 代码。
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryBackground">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.04" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.96" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guidelineTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.04" />
<TextView
android:id="@+id/tvStart"
style="@style/StyleRegular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Text A"
android:textSize="20sp"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/tvEnd"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="@id/guidelineStart"
app:layout_constraintTop_toTopOf="@id/guidelineTop" />
<TextView
android:id="@+id/tvEnd"
style="@style/StyleRegular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:ellipsize="end"
android:maxLines="1"
android:text="Text B Text B Text B Text B Text B T"
app:layout_constrainedWidth="true"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="@id/guidelineEnd"
app:layout_constraintStart_toEndOf="@id/tvStart"
app:layout_constraintTop_toTopOf="@id/guidelineTop" />
</androidx.constraintlayout.widget.ConstraintLayout>
最佳答案
你可以尝试这样的事情
<?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/tvStart"
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintEnd_toStartOf="@id/tvEnd"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:text="Text A Text A Text" />
<TextView
android:id="@+id/tvEnd"
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintStart_toEndOf="@id/tvStart"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:text="Text B Text B Text B Text B Text B T" />
</androidx.constraintlayout.widget.ConstraintLayout>
这是布局的样子。您可以将 layout_width
从 0dp
更改为 wrap_content
并查看它如何在 2 个 View 之间发挥作用,以达到您想要的位置。
关于android - 如何让两个TextView彼此对齐为 "wrap_content"但又在ConstraintLayout的约束范围内而不互相溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67158277/