Android Как избавиться от знака вопроса в конце многоточия - PullRequest
10 голосов
/ 26 апреля 2011

Я определил следующее 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"/>

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

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

Спасибо!

Ответы [ 2 ]

35 голосов
/ 26 апреля 2011

Процитирую себя из одной из моих книг :

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

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

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

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

9 голосов
/ 10 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...