Android: что-то лучше, чем android:ellipsize="end", чтобы добавить "..." к усеченным длинным строкам?
отель делает
"короткое и очень длинное слово"
to
"короткое и"
. Но я хочу иметь smth. как
" короткий и очень-Лон..."
прямо сейчас я усекаю строку в коде Java. Однако это зависит от количества символов, а не от фактической длины ссылки. Итак, результат не очень милый.
String title;
if(model.getOrganization().length() > 19) {
title = model.getText().substring(0, 15).trim() + "…";
} else {
title = model.getText();
}
((TextView) findViewById(R.id.TextViewTitle)).setText(title);
обновление
только что заметил, это свойство добавляет "...- в некоторых случаях. Но не во всех:
12345678901234567890 становится "12345678901234..."
однако,
"1234567890 1234567890" становится "1234567890" и не "1234567890 123..."
обновление 2
теперь это действительно становится фанки! Я просто singleLine=true и удалена maxLine (ошибка появляется с атрибутом ellipsize и без него)...
Это скриншот взять из Motorola Milestone с android 2.1 обновление 1. То же самое происходит на HTC Desire с той же версией android
обновление 3
теперь я использую android: ellipsize= "marquee". Это, кажется, единственная правильно работающая установка. Он также движется, только когда сфокусирован. Я вижу это во многих других приложениях также. Думаю, это обычная практика.
4 ответов
Если это для одной строки, попробуйте следующее:
android:ellipsize="end"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
это сработало для меня.
У меня была аналогичная проблема, и установка этого свойства в TextView помогла:
android:singleLine="true"
кроме того, я использовал RelativeLayout поэтому я ограничил пространство TextView, установив левое поле на кнопку справа от TextView, так что текст не может расширяться дальше и вынужден усекать его содержимое.
возможно, это не решение вашей проблемы, но это помогло мне в аналогичной ситуации.
см. Мой обновления 3. Обходным путем было использование "marquee". Я видел, что многие приложения делают это в это время. Теперь, с новыми версиями Android эта функция скорее всего исправлено и будет работать, как ожидалось. (моя догадка)
может быть, вы могли бы взглянуть на то, как частный класс Эллипсизера используется ОС работает и изменяет его для вашего приложения?
Edit: вот рабочая ссылка - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830