среда, апреля 18, 2012

TextView, ellipsize, maxLines и странности

Есть у меня такой TextView:

    [TextView
        android:id="@+id/news_item_text"
        style="@style/text_plain_embossed"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:ellipsize="end"
        android:maxLines="4"
        android:text="Здесь текст новости, который может быть очень очень очень длинным и не помещаться на одну строку. Шла Маша по шоссе и сосала сушку. Чем дальше в лес, тем толще партизаны. Странный аттрактор не имеет выхода."/]

Всё, что я от него хочу, это:

  • чтобы длинный текст отображался бы в 4 строки (android:maxLines="4" )
  • чтобы в конце текста, если он не помещается целиком, добавлялось бы многоточие ( android:ellipsize="end")
И вот тут начинается самое интересное. В разных версиях (я тут вначале опечатался и набрал слово "весрия", но иногда хочется именно так и оставить) Андроида результат отображения этого представления получается весьма разный. Изображения сняты из эмулятора, но на устройствах они получаются такими же (проверялось на HTC Desire (2.3), Samsung Galaxy Tab 7.7 (3.2) и на Samsung Galaxy S II (4.0)).

Android 2.2

Android 3.2


Android 4.0

Видно, что:
Android 2.2 - количество строк - плохо, многоточие - хорошо.
Android 3.2 - количество строк - хорошо, многоточие - плохо
Android 4.0 - количество строк - хорошо, многоточие - хорошо.

При этом, в если убрать android:ellipsize="end", то в 2.2 получается вот так:
Android 2.2, без ellipsize

И как с этим бороться?!