Решение, которое вы приняли, не будет корректно масштабироваться на всех устройствах.
Причина : ширина "a" меньше, чем "A", поэтому, если вы усекаете строку на основена некоторый размер (скажем, 15 букв) и добавление "..." через код.Результаты могут быть не ожидаемыми.
Теперь перейдем к решению: -
Решения:
Решение № 1: Добавьте следующие 3 атрибута в ваш TextView, и вы получите желаемый результат:)
<TextView
android:ellipsize="end"
android:lines="1"
android:scrollHorizontally="true" />
Решение № 2: Еще один обходной путь: вы можете решить выделить текст (причудливая анимация, перемещающая ваш текст справа налево).Для этого вам понадобятся следующие атрибуты в вашем TextView xml: -
<TextView
android:id="@+id/my_text_view"
android:ellipsize="marquee"
android:lines="1"
android:scrollHorizontally="true"
android:marqueeRepeatLimit="marquee_forever" />
А затем в вашем коде вам нужно получить TextView по его идентификатору и вставить следующую строку: -
TextView myTextView = (TextView) findViewById(R.id.my_text_view);
myTextView.setSelected(true);
#### Редактировать: - ####
Я только что понял, что для моего решения для работы в версиях Android больше, чем 2.3.x нам нужно добавить следующеестрока в нашем TextView xml: -
android:singleLine="true"
Хотя это устаревший атрибут, но вы должны добавить его, иначе marquee или "..." не сработают.
Надеюсь, что это ответвопрос:)