Подтвердить что ты не робот

Android: TextView автоматически усекает и заменяет последние 3 char строки

Если a String длиннее ширины TextView, он автоматически переносится на следующую строку. Я могу избежать этого, используя android:singleLine (устаревший) или установив android:inputType="text". Теперь мне нужно что-то, что заменяет последние 3 символа моего String на "...". Поскольку я не использую моноширинный шрифт, это всегда будет отличаться в зависимости от букв, используемых в моем String. Поэтому мне интересно, какой лучший способ получить последние 3 символа строки в TextView и заменить их. Возможно, в платформе Android уже реализовано что-то, так как это должна быть общая проблема.

4b9b3361

Ответ 1

Вы должны иметь возможность использовать свойство "эллипсис" текстового вида:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Вам также может потребоваться применить значения гравитации к макету; Я иногда видел "автоматическое растяжение" без них.

Ответ 2

Нашел интересную работу по этой проблеме.

maxLines=1
ellipsize=end
scrollHorizontally=true

Фокус в том, что последнее утверждение о горизонтальной прокрутке... проверьте его. Это по крайней мере работает на v2.2.

Ответ 3

с программным

Вы можете использовать

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);