如何强制TextView在第一行使用尽可能多的空间

时间:2018-11-13 23:38:27

标签: android xml textview android-constraintlayout

我在创建聊天布局时遇到问题。

如何强制TextView的文本填充整个区域? 即使字符串是连续的,有时文本也会转到下一行。

Problem

带有TextView的XML:

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginBottom="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/my_msg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/message_my_shape"
    android:paddingLeft="16dp"
    android:paddingTop="8dp"
    android:paddingRight="16dp"
    android:paddingBottom="8dp"
    android:text="Hey mate,how youre doing?"
    android:textColor="#fcc7d3"
    android:textSize="16sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="0dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

UPD: 伙计们,你不太了解我。填充应该在那儿,我不要一行,请查看显示了布局边界的新屏幕截图,以了解我在说什么。 问题仍然是一样的,为什么TextView中的文本有时无法填充所有可用空间? enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

发生这种情况的原因是,您没有指定android:maxLines=1 仅包含一行。

从文档中:

  

android:maxLines

     

使TextView最多不超过这么多行。当用于   可编辑的文本,inputType属性的值必须与   要应用maxLines属性的textMultiLine标志。

因此,如果您希望始终只显示一行文本,请使用:

<TextView
    android:id="@+id/my_msg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/message_my_shape"
    android:paddingLeft="16dp"
    android:paddingTop="8dp"
    android:paddingRight="16dp"
    android:paddingBottom="8dp"
    android:text="Hey mate,how youre doing?"
    android:textColor="#fcc7d3"
    android:textSize="16sp"
    android:maxLines=1
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    tools:layout_editor_absoluteY="0dp" />

您的代码中的所有内容

encodeURIComponent()

答案 1 :(得分:0)

找到了解决方案。

对于API 23及更高版本,请添加到您的TextView中:

android:breakStrategy="simple"

对于API <23,动态地从您的文本中删除隐藏的&nbsp;(Android会自动添加它们)。

答案 2 :(得分:0)

代码正确,请在单词之间留出空格

不是:“ jhjhhjhjhhjhddfhdjfdfdfgdjdjfdj”

try:嗨,伙计,你好吗,你最近好吗?

android:layout_width =“ match_parent” //如果需要