问题描述
我必须实现一个聊天机器人,但是我不知道如何调整消息的文本视图大小。
我希望气球完全适合文本,而右侧不使用白色空格,而不使用maxWidth
。
我的代码是
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.appcompat.widget.AppCompatimageView
android:id="@+id/bot_icon"
android:layout_width="50dp"
android:layout_height="0dp"
android:adjustViewBounds="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:src="@drawable/ic_botchat"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/bot_icon"
app:layout_constraintTop_toBottomOf="@id/bot_icon">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textMessage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/bot_message"
android:elevation="3dp"
android:fontFamily="@font/roboto"
android:paddingStart="16dp"
android:paddingTop="10dp"
android:paddingEnd="16dp"
android:paddingBottom="10dp"
android:textColor="@color/visia"
android:textSize="18sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我尝试使用android:layout_width
修改AppCompatTextView中的wrap_content
,但是文本在一行中可视化,超出了屏幕。
解决方法
根据this的答案,您无法使用默认的TextView来实现所需的功能,并且需要有一个自定义的文本视图,在其中覆盖了 onMeasure 方法,以便最大程度地width将是您最大的线条的宽度。
,使用属性“ maxLines”指定textview应该具有的行数。例如,
resource "aws_elasticache_replication_group" "elc-rep-group" {
...
automatic_failover_enabled = true #this is required,when cluster-enabled parameter is on
parameter_group_name = "default.redis5.0.cluster.on"
...
}
,
如果您的问题是如何在textView
中删除正确的空格,只需在textview
属性中删除此行:
app:layout_constraintEnd_toEndOf="parent"
您实际上是将textview
的末尾限制在其父级的末尾,这就是wrap_content
运作不正常的原因。因此结果将是:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/bot_icon"
android:layout_width="50dp"
android:layout_height="0dp"
android:adjustViewBounds="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:src="@drawable/boy_icon"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/bot_icon"
app:layout_constraintTop_toBottomOf="@id/bot_icon">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/round_gray_20"
android:elevation="3dp"
android:paddingStart="16dp"
android:paddingTop="10dp"
android:paddingEnd="16dp"
android:paddingBottom="10dp"
android:text="fsdfsdfsdfsdsfsd "
android:textColor="@color/blackText"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
请注意,我可能已经更改了一些drawables
,并使用我的来查看结果。因此,请相应地将其还原为原始版本。
尝试为父文本设置宽度,并为wrap_content文本
,将您的布局编辑为这样
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D7D7D7">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/bot_icon"
android:layout_width="50dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:adjustViewBounds="true"
android:src="@drawable/ic_botchat"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bot_message"
android:elevation="3dp"
android:fontFamily="@font/roboto"
android:maxLines="2"
android:paddingStart="16dp"
android:paddingTop="10dp"
android:paddingEnd="16dp"
android:paddingBottom="10dp"
android:text="Lorem Ipsum."
android:textColor="@color/visia"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/bot_icon"
app:layout_constraintTop_toBottomOf="@id/bot_icon" />
</androidx.constraintlayout.widget.ConstraintLayout>
然后创建XML文件“ bot_message.xml”
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:bottomLeftRadius="20dp"
android:bottomRightRadius="20dp"
android:topLeftRadius="0dp"
android:topRightRadius="20dp" />
<solid android:color="#F5F5F5" />
</shape>