Ответ 1
См. мое обновление 3. В обходном пути использовалось "marquee". В это время я видел множество приложений. Теперь, с новыми версиями Android, эта функция, скорее всего, исправлена и будет работать так, как ожидалось. (моя догадка)
Это свойство делает
"короткое и очень длинное слово"
to
"short и
. Но я хочу иметь что-то. как
"короткий и очень-длинный..."
Прямо сейчас я усекаю строку в коде 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. То же самое происходит и с HTC Desire с той же версией Android.
Обновление 3
Теперь я использую android: ellipsize = "marquee". Кажется, это единственно правильная рабочая настройка. Он также движется только при фокусировке. Я также вижу это во многих других приложениях. Я предполагаю, что это обычная практика.
См. мое обновление 3. В обходном пути использовалось "marquee". В это время я видел множество приложений. Теперь, с новыми версиями Android, эта функция, скорее всего, исправлена и будет работать так, как ожидалось. (моя догадка)
Если это для одной строки, попробуйте следующее:
android:ellipsize="end"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
Это сработало для меня.
У меня была аналогичная проблема и установка этого свойства в TextView помогла:
android:singleLine="true"
Кроме того, я использовал RelativeLayout, поэтому я ограничил пространство, которое TextView мог взять, установив левое поле на кнопку справа от TextView, чтобы текст не мог расширяться дальше и был вынужден обрезать его содержимое.
Возможно, это не решение вашей проблемы, но это помогло мне в аналогичной ситуации.
Возможно, вы можете взглянуть на то, как работает частный класс Ellipsizer, используемый операционной системой, и изменить его для вашего приложения?
Изменить: Здесь рабочая ссылка - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830