由于父级视图的填充,ConstraintLayout 中的 TextView 不能正常调整大小以适应其内容。

3
我正在尝试完成一个相当基础的操作:我有一个包含TextView的ConstraintLayout,我希望TextView根据其内容自动调整大小。然而,现在TextView溢出并且没有完全显示。罪魁祸首是ConstraintLayout的padding。有什么办法可以在保留padding的同时解决问题吗?(我在ConstraintLayout中有更多元素,所以我不想在每个元素上放置边距,而是要使用父级的padding)

图像(来自Android Studio的布局编辑器,但在运行时结果相同):

enter image description here

代码:

<android.support.constraint.ConstraintLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/msg_in_bg"
    android:padding="10dp"
    android:maxWidth="240dp">

    <TextView
        android:id="@+id/txtMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/messageTxt"
        android:text="@{item.text}"
        tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel ex nec massa tincidunt dapibus eget quis nulla. Sed tristique justo sed vehicula congue. Nullam varius lacinia sagittis. Sed consectetur sit amet erat fringilla vehicula. Donec dapibus elit eu mauris congue, a dapibus mi laoreet. "
        app:layout_constrainedWidth="true"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent" />

</android.support.constraint.ConstraintLayout>

考虑在布局文件中删除 android:maxWidth - John Le
我想保留maxWidth,因为我不希望文本太宽。 - Adam
1个回答

1
android:maxWidth 属性从父级 ConstraintLayout 移动到 TextView 中。您还需要调整它以考虑填充(即将其更改为 220dp,而不是 240dp,因为您将有20dp的水平填充)。
这样做后,就不需要 app:layout_constrainedWidth 属性了。
<android.support.constraint.ConstraintLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:background="@drawable/msg_in_bg">

    <TextView
        android:id="@+id/txtMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/messageTxt"
        android:text="@{item.text}"
        android:maxWidth="220dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel ex nec massa tincidunt dapibus eget quis nulla. Sed tristique justo sed vehicula congue. Nullam varius lacinia sagittis. Sed consectetur sit amet erat fringilla vehicula. Donec dapibus elit eu mauris congue, a dapibus mi laoreet. "/>

</android.support.constraint.ConstraintLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接