Как настроить текстовое представление Android, чтобы вырезать любые буквы, которые не вписываются в макет

У меня есть несколько TextViews подряд, и я хочу, чтобы 1-й TextView занимал все свободное пространство, но если общая длина TextViews слишком велика, чтобы поместиться в одну строку, я хочу, чтобы 1-й TextView был обрезан.

Что касается свободного места, я установил layout_width 1-го TextView, чтобы он соответствовал родительскому, а layout_weight был равен 1, что работает. Я просто не могу заставить его отрезать лишние буквы, чтобы он помещался в одну строку.

Я хочу что-то вроде следующего с «Текст» и «Длинный текст»

'Text   :data'
'Long T :data'

Таким образом, «Длинный текст» обрезается до «Длинного Т», чтобы соответствовать.

Я получаю

'Text   :data'
'Long Text :d'

Спасибо!


person Dre    schedule 15.01.2011    source источник


Ответы (3)


Задайте первому (слева) TextView заданный размер (заданный в относительном выражении, dp) или используйте для него maxWidth, а также используйте ellipsize.

http://developer.android.com/reference/android/widget/TextView.html#attr_android:ellipsize

Это хороший ответ на вашу проблему: TextView обрезает текст, когда это достаточно долго

Кроме того, похоже на этот вопрос, который может помочь: Две стороны TextViews рядом, только один в многоточие?

person Charlie Collins    schedule 15.01.2011

Попробуйте что-то вроде этого:

android:singleLine="true"
android:ellipsize="start"
android:scrollHorizontally="true"
person Bogdan Alexandru Militaru    schedule 25.03.2016

Попробуйте этот ответ https://stackoverflow.com/a/58497299/2717821, чтобы обрезать левый текст, если он слишком длинный

<?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_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp">

    <TextView
        android:id="@+id/leftText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        app:layout_constrainedWidth="true"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintEnd_toStartOf="@id/rightText"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="|short destination|" />

    <TextView
        android:id="@+id/rightText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/leftText"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="|next departure|" />

</androidx.constraintlayout.widget.ConstraintLayout>
person Deni Erdyneev    schedule 22.10.2019