gpt4 book ai didi

android - 在使用 layout_constrainedWidth 时,如何防止 ConstraintLayout 链中的 TextView 将其他 TextView 推到它们的约束之外?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:17 26 4
gpt4 key购买 nike

我的最终目标是在左对齐、打包的水平链中有两个单行 TextView,允许它们增长以填充剩余空间,必要时将其平均拆分,在没有空间时省略。

视觉辅助: enter image description here

这是我试图实现的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
tools:text="@tools:sample/lorem"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/textView2"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:ellipsize="end"
android:maxLines="1"
tools:text="@tools:sample/lorem"
app:layout_constrainedWidth="true"
app:layout_constraintStart_toEndOf="@id/textView1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />

</android.support.constraint.ConstraintLayout>

如您所见,我在水平链中布置了两个 TextView 。我已经将链条样式设置为打包,以便它们保持在一起。我已将水平偏差设置为 0,以便链左对齐。我将宽度设置为 wrap_content,这样当文本很短时它们就不会拉伸(stretch),而且我还设置了 app:layout_constrainedWidth="true" 这样它们就不会过去当文本很长时,它们的界限。这几乎完全按照我想要的方式工作除了当textView2 中的文本增长时。随着 textView1 的增长,它会将 textView2 向右推,直到它达到其约束,此时它会变成椭圆(如预期/期望的那样),但 textview2 并非如此。随着 textView2 的增长,它会拉伸(stretch)以填充其右侧的空间,但一旦它达到其约束,它不会椭圆化,而是会继续拉伸(stretch)并开始将 textView1 向左推,直到它不再可见。

视觉辅助(实际行为):

enter image description here

我尝试在每个 View 上使用诸如将 layout_constraintHorizo​​ntal_weight 设置为 .5 之类的设置,但这没有任何效果,除非我将两个 View 宽度都更改为 0dp (match_constraints),这打破了两个 View 都有的场景短文本(它在两个 TextView 之间增加了额外的空间)。

感觉是,当您将 width=wrap_contentlayout_constrainedWidth=true 结合使用时,权重值将被忽略。这只是 ConstraintLayout 的限制吗?我花了很多时间试图找出一种方法来完成这项工作,但现在看来这是不可能的。我已经退回到使用 LinearLayout 并做出一些设计妥协,但如果有人有任何想法,我真的很想让它工作。谢谢!

最佳答案

如果有人仍在寻找答案,我认为以下代码会有所帮助。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<TextView
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintWidth_max="wrap"
app:layout_constraintWidth_percent="0.5"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/text2"
app:layout_constraintHorizontal_chainStyle="packed"
android:background="#ff0000"
android:text="This is what you are looking for ?"
/>

<TextView
android:id="@+id/text2"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintWidth_max="wrap"
app:layout_constraintWidth_percent="1"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/text1"
app:layout_constraintEnd_toEndOf="parent"
android:background="#ee0"
android:text="This is a Long Text TextView2 And not something else"
/>

</android.support.constraint.ConstraintLayout>

关于android - 在使用 layout_constrainedWidth 时,如何防止 ConstraintLayout 链中的 TextView 将其他 TextView 推到它们的约束之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51334025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com