Android约束布局中的文本超出屏幕

3

我有一个listView,其中的项目包含两个组件imageView和textView。我正在尝试在textView内设置文本背景。

所以我认为如果我能够将Textview宽度设置为wrap_content,那么使用android:background标签就可以解决问题。

我所做的是将textview的宽度和高度设置为wrap_content,这仅适用于短文本,但如果我有一个长文本,则部分文本将超出屏幕。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
app:layout_constraintWidth_default="wrap"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteY="25dp"
tools:layout_editor_absoluteX="0dp">

<ImageView
    android:id="@+id/imageViewChat"
    android:layout_width="50dp"
    android:layout_height="50dp"
    app:srcCompat="@drawable/googleg_standard_color_18"
    android:layout_marginStart="16dp"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="26dp"
    android:layout_marginLeft="16dp"
    app:layout_constraintLeft_toLeftOf="parent" />

<TextView
    android:id="@+id/textViewChat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginLeft="8dp"

    android:layout_marginRight="16dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="26dp"
    android:background="@drawable/rounded_corner"

    android:fontFamily="serif"
    android:text="ssssss ssssss ssssss ssssss ssssss ssssss  ssssss 
    ssssss  ssssss ssssss "
    android:textAlignment="textStart"
    android:textColor="@color/bb_darkBackgroundColor"
    android:textSize="15sp"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintLeft_toRightOf="@+id/imageViewChat"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />



</android.support.constraint.ConstraintLayout>

1个回答

22

你需要将宽度设为0dp,并将默认宽度行为设置为wrap到文本视图,如下所示

android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"

而且你还缺少顶部约束,这将导致视图在运行时错位。


谢谢,它按预期工作,但不知道为什么在添加此行代码后无法设置文本对齐方式:app:layout_constraintWidth_default="wrap"。通常我可以使用以下代码设置文本开头的文本对齐方式:chattext.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_END)。 - Mohamed Elloumi
不太清楚它在XML中的工作原理,您可以检查android:gravity="end"或Java中的setGravity。 - Pavan
我发现只需要在程序中禁用这一行,如果您能帮忙,非常感谢:app:layout_constraintWidth_default="wrap"。 - Mohamed Elloumi
如果您希望将视图固定在设备的右侧并使用完整的设备宽度,您可以从XML中删除app:layout_constraintWidth_default="wrap",但这取决于您的要求。 - Pavan
检查在运行时更改/设置约束条件,请参阅以下链接:https://dev59.com/IlcO5IYBdhLWcg3ww0Zt - Pavan
显示剩余2条评论

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