Android: TextView автоматично обрізає та замінює останні три символи String


131

Якщо a Stringбільше, ніж TextViewширина, вона автоматично переходить на наступний рядок. Я можу цього уникнути, використовуючи android:singleLine(застаріле) або встановивши android:inputType="text". Що мені зараз потрібно - це те, що замінює три останні мої символи на String" ... ". Оскільки я не використовую монопросторний шрифт, це завжди буде різним, залежно від букв, які використовуються в моїх String. Тож мені цікаво, який найкращий спосіб отримати останні три символи рядка в a TextViewі замінити їх. Можливо, в рамках Android вже є щось реалізоване, оскільки це має бути загальною проблемою.

Відповіді:


290

Ви повинні мати можливість використовувати властивість "ellipsize" для перегляду тексту:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Можливо, вам також знадобиться застосувати значення гравітації до макета; Я іноді бачив "автоматичні розтягування" поглядів без них.


Ідеально. Дякую. Я раніше це намагався, але не вийшло, тому що я використовував android: inputType = "text" замість android: singleLine = "true" (який, як передбачається, застарів). Але тепер я буду дотримуватися андроїда: singleLine = "true". Дуже дякую.
znq

44
Він все ще не додає "...". Для мене це питання не відповідає повністю! Ця відповідь зробить "коротке дуже довге слово" просто "коротким", а не "коротким дуже довгим ..." На додаток до цього, ви, хлопці, пропонуєте скористатися застарілим атрибутом.
OneWorld

7
Працює чудово, однак застарілий singleLine, тому ви повинні використовувати замість maxLines = "1". Бічна примітка, ellipsize працює також з кількома лініями!
Торре Ласлі

4
SingleLine застарілий. Використовуйте maxLines = "1". просто коментар до старої відповіді
Ewoks

1
MaxLine = 1 скоротить перегляд тексту посередині. SingleLine = Правда працює, як очікувалося.
Змія

33

Знайшов цікаву роботу з цією проблемою.

maxLines=1
ellipsize=end
scrollHorizontally=true

Хитрість полягає в тому, що останнє твердження про горизонтальну прокрутку .... перевірте це. Він принаймні працює на v2.2.


Цікаво ... добре знати. Дякую Марко за голову.
BonanzaDriver

4

Програмно ви можете використовувати:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.