Android: многострочный эллипс TextView

Как я могу сделать многострочный TextView, который правильно обрезает текст? Мой TextView является частью TableRow, поэтому его ширина — это вес. Следующее не работает. В результате получается просто усеченный текст без многоточия. Я использую API 10 (Android 2.3.3).

<TextView
        android:id="@+id/name_recipe"
        android:layout_centerHorizontal="true"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="8"
        android:text="Fried pork with mushrooms and potatoes and cilantro"
        android:ellipsize="end"
        android:maxLines="2"
        android:paddingLeft="10dp" />

Сокращение двух строк в одну с помощью следующего работает, но не идеально:

android:singleLine="true"

Мне это не нравится по двум причинам:

  1. android:singleLine is deprecated
  2. I'd much prefer to have the text be on two lines than one.

Я видел обсуждение этого, например, из здесь, но я надеюсь, что новое решение было найдено к настоящему времени.


person Tianxiang Xiong    schedule 12.08.2011    source источник


Ответы (2)


Попробуйте это, это из моего проекта и работает на телефоне, но, к сожалению, не на эмуляторе планшета:

<TextView
        android:id="@+id/myItem"
        android:layout_gravity="bottom|center_vertical"
        android:textSize="10sp"
        android:maxLines="2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:ellipsize="end"
        android:lines="2" />
person ania    schedule 12.08.2011
comment
Привет, Аня, похоже, это не работает. Текст по-прежнему обрезан без каких-либо многоточий. На какой версии Android вы разрабатываете? - person Tianxiang Xiong; 12.08.2011
comment
Извините, праздники :) Версия андроида 2.1+. Для планшетов не работает. - person ania; 05.09.2011
comment
Это сработало для меня спасибо - person aryaxt; 11.05.2014

Используйте lines="1", так как все остальные методы устарели. А также установить scrollHorizontally.

<TextView 
        android:id="@+id/myid" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"        
        android:lines="1"       
        android:scrollHorizontally="true"
        android:ellipsize="end"
        android:layout_weight="1"
/>
person Pete    schedule 12.08.2011
comment
Привет, Пит, к сожалению, это тоже не работает. Эллипсы просто не отображаются. Спасибо за ответ. - person Tianxiang Xiong; 12.08.2011
comment
Пит, ты не должен scrollHorizontally быть false, если хочешь сделать android:ellipsize="end". (Это должно быть true, если вы хотите сделать android:ellipsize="marquee".) - person Adil Hussain; 01.08.2012