Android - ellipsize = "end" не показывает три точки - PullRequest
0 голосов
/ 17 ноября 2018

Я работаю над TextView, который содержится в ConstraintLayout.

Я хочу, чтобы ellipsize добавил три точки в конце текста (в TextView), если его длина превышает maxLength.

maxLines = "1" и ellipsize = "end" показались лучшим ответом после тщательного изучения моего вопроса. К сожалению, это не сработало для моего случая. Три точки вообще не показывались.

Вот снимок:

enter image description here

Первоначальной строкой было «Тест для длинного описания» (n было удалено). Предполагается показать «Тест на длинное описание ...».

Вот мой xml:

<TextView
    android:id="@+id/txtDescription"
    android:maxLength="24"
    android:maxLines="1"
    android:ellipsize="end"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="120dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="16dp"
    android:layout_marginBottom="8dp"
    android:text="DescriptionView"
    android:textSize="18sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.72" />

Мне кажется, что в XML-файле есть что-то переопределенное, или я упустил что-то важное в XML-файле?

Ответы [ 4 ]

0 голосов
/ 17 ноября 2018

Ключ для создания трехточечных шоу - ограничение ширины текстового представления.Предположим, что имя изображения на вашем опубликованном рисунке равно left_image, измените атрибуты xml TextView, как показано ниже:

....
android:layout_width="0dp" 
app:layout_constraintStart_toEndOf="@+id/left_image"
....

над двумя строками, чтобы ограничить ширину TextView (между левым изображением и правой границейродитель).

0 голосов
/ 17 ноября 2018

Добавьте еще одно свойство android:singleLine="true" в вашем Textview

ИЛИ Используйте эти три вместе

android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
0 голосов
/ 17 ноября 2018

Проблема в следующем:

android:maxLength="24"

удалите его, так как вы хотите, чтобы TextView был эллиптическим.TextView становится эллиптическим, когда он недостаточно широк, чтобы показать весь текст.Я думаю, вы не понимаете, что это за атрибут android:ellipsize="end".Если он достаточно широк, вы не увидите никаких точек в конце, потому что они не нужны.Если вы установите android:layout_width="40dp", вы увидите точки.С android:layout_width="wrap_content" TextView достаточно широк и не имеет эллиптических размеров.

0 голосов
/ 17 ноября 2018

Ellipsize - довольно трудная задача для Android, примените ниже для вашего textView:

txtDescription.setSingleLine(true);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...