Android - 由于父级的填充,ConstraintLayout中的Textview没有正确调整大小以适应其内容

问题描述 投票:2回答:1

我正在尝试做一个非常基本的事情:我有一个带有TextView的ConstraintLayout,我希望TextView根据其内容调整大小。但是,现在TextView溢出并且未完全显示。罪魁祸首是ConstraintLayout的填充。任何想法如何在保持填充的同时修复它? (我在ConstraintLayout中有更多的元素,所以我不想在每个元素上设置边距而不是父节点的填充)

图像(来自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 overflow padding android-constraintlayout
1个回答
0
投票

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>
© www.soinside.com 2019 - 2024. All rights reserved.