Reputation: 41
I'm trying to do a pretty basic thing: I have a ConstraintLayout with a TextView inside and I want the TextView to resize according to its contents. However, right now the TextView overflows and is not fully displayed. The culprit is the ConstraintLayout's padding. Any ideas how to fix it while keeping the padding? (I have more elements inside the ConstraintLayout, so I don't wanna put a margin on each one of them instead of the parent's padding)
Image (from Android Studio's layout editor, but the result is the same during runtime):
Code:
<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>
Upvotes: 3
Views: 838
Reputation: 54234
Move the android:maxWidth
attribute from the parent ConstraintLayout
into the TextView
. You'll also want to adjust it to consider the padding (i.e. change it to 220dp
instead of 240dp
since you'll have 20dp of horizontal padding).
After doing that, there's no need for the app:layout_constrainedWidth
attribute.
<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>
Upvotes: 1