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

Android Как избавиться от вопросительного знака в конце эллипсиса

Я определил следующий TextView:

    <TextView
    android:id="@+id/textview_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="left"
    android:layout_alignParentTop="true"
    android:layout_marginRight="25dip"
    android:ellipsize="end"/>

И, как и ожидалось, текст отключается, если он слишком длинный и заменяется на "...". Но в конце трех пунктов появляется вопросительный знак, окруженный квадратом.

Как я могу избавиться от этого вопросительного знака?

Спасибо!

4b9b3361

Ответ 1

Чтобы процитировать меня из одной из моих книг:

Android TextView класс имеет встроенную способность "эллипсизовать" текст, усечение и добавление многоточия, если текст длиннее, чем доступный пространство. Вы можете использовать это с помощью атрибута android:ellipsize, например. Это работает достаточно хорошо, по крайней мере для однострочного текста.

Эллипсис, который использует Android, - это не три периода. Скорее он использует фактическое эллипсис, где три точки содержатся в одном глифе. Следовательно, любой шрифт, который вы используете, который вы также используете для функции "эллипсинга", будет нужен эллиптический глиф.

Кроме того, Android выталкивает строку, которая отображается в режиме on- экран так, чтобы длина (в символах) была одинаковой до и после "Ellipsizing". Чтобы сделать эту работу, Android заменяет один символ на эллипсис и заменяет все остальные удаленные символы на Unicode символ "ZERO WIDTH NO-BREAK SPACE" (U+FEFF). Это означает, что "лишние" символы после того, как многоточие не занимает какое-либо видимое пространство на, но они могут быть частью строки.

Однако это означает любые пользовательские шрифты, которые вы используете для TextView виджетов, которые вы используете с android:ellipsize, также должны поддерживать этот специальный Unicode персонаж. Не все шрифты, и вы получите артефакты на экране представление ваших сокращенных строк, если ваш шрифт не имеет этого символа (например, мошенник X появляется в конце строки).

Ответ 2

Была та же проблема. Кто-то с данными FontForge фиксировал U + FEFF в моих пользовательских шрифтах, и теперь они работают хорошо. Вот как он описал, что он сделал:

"Я плохо разбираюсь в Fontforge, поэтому я обманул. В принципе, открыл шрифт в Fontforge, выбрал пробел, ctrl + c для копирования, затем выбрал FEFF, ctrl + v для вставки. Затем меню Metrics- > Установите ширину и установите нуль. Затем File- > Generate Fonts."