Почему TextView в одной строке elipsized с " end " показывает поля?
Я использую TextView в Android, что я хочу показать 1 строку в TextView, заканчивающуюся на ". "но это дает [] поле типа в конце. Я не знаю, почему? Я просто хочу, чтобы remvoe это поле и только показать текст, заканчивающийся на"... "

Обновить код для list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="85dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:cacheColorHint="#4C7B8D"
android:background="#4C7B8D">
<ImageView
android:id="@+id/videoListImage"
android:src="@drawable/audio_thumbnail60x60"
android:layout_height="75dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:scaleType="fitXY"
android:layout_width="75dp"
android:padding="4dp"
android:background="@color/light_gray" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@+id/next_arrow"
android:orientation="vertical"
android:gravity="center_vertical"
android:paddingLeft = "5dp">
<TextView
android:id="@+id/row_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/app_background_color"
android:textSize="18sp"
android:ellipsize="end"
android:maxLines="1" />
<TextView
android:id="@+id/row_dis"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/color_black"
android:layout_marginRight="2dp"
android:textSize="15sp"
android:ellipsize="end"
android:maxLines="1" />
<TextView
android:text="$7.50"
android:id="@+id/audio_price_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:textColor="@color/color_white"
android:textStyle = "bold"
android:paddingLeft = "12dp"
android:paddingRight = "12dp"
android:background="@drawable/blue_round_cornor_background" />
</LinearLayout>
<ImageView
android:id="@+id/next_arrow"
android:src="@drawable/next_arrow"
android:layout_toLeftOf="@+id/saved_purchased"
android:scaleType="fitXY"
android:layout_height="25dp"
android:layout_width="18dp"
android:layout_centerVertical="true"
android:visibility = "gone"/>
<ImageView
android:id="@+id/saved_purchased"
android:layout_alignParentRight="true"
android:layout_alignParentTop ="true"
android:scaleType="fitXY"
android:layout_height="25dp"
android:layout_width="25dp"
android:layout_marginRight="2dp"/>
</RelativeLayout>
Вот изображения " next_arrow"

Вот код, который я использую getView () в адаптере.
String discription = listData.getDescription();
if (discription != null && discription.length() > 0) {
if (textViewDis != null) {
textViewDis.setTypeface(titleFont);
Log.e("data", ""+discription);
discription.replaceAll("rn", "");
textViewDis.setText(discription);
}
}
Вот фактическая строка описания, которая должна быть дисплей.
Эндрю и Стефани Тидуэлл откровенно делятся своей историей успеха в этом бизнесе. Эта история поможет каждому слушателю понять, что никто не совершенен, даже в бизнесе второго поколения. Это потоковый аудиофайл.
Все еще есть какие-то проблемы? Я могу обновить вопрос больше.
6 ответов:
Цитирую себя из одной из моих книг :
Класс TextView Android имеет встроенную возможность "эллипсизировать" текст, усечение и добавление многоточия, если текст длиннее, чем доступный пространство. Вы можете использовать это с помощью атрибута android:ellipsize, например. Это работает довольно хорошо, по крайней мере, для однострочного текста. Многоточие, которое использует Android, не является тремя периодами. Скорее он использует фактический символ многоточия, где три точки содержатся в один глиф. Следовательно, любой шрифт, который вы используете, что вы также используете функцию "эллипсиса" будет нужен многоточие глиф.
Кроме того, Android выводит строку, которая отображается на экране, таким образом, что длина (в символах) одинакова до и после "ellipsizing". Чтобы сделать эту работу, Android заменяет один символ на другой. многоточие, и заменяет все другие удаленные символы на Unicode символ "нулевая ширина пространства без разрыва" (U+FEFF). Это означает, что "лишние" символы после многоточия не занимают видимого места на экране. экран, но они могут быть частью строки.
Однако это означает любые пользовательские шрифты, используемые для виджетов TextView, которые вы используете с android: ellipsize также должен поддерживать этот специальный Unicode характер. Не все шрифты делают это, и вы получите артефакты на экране. представление ваших укороченных строк, Если ваш шрифт не содержит этого символа (например, rogue X появляется в конце строки).
Я столкнулся с той же проблемой, когда пытался использовать пользовательский " MetaPro-Medium.otf " как шрифт для
TextViewС aandroid:singleLine="true". Коробка на конце шнурка действительно раздражала.Я не нашел способа, как решить эту проблему в Android, но в то же время нашел следующую работу вокруг.
- я установил "FontLab Studio v5. 04"
- открыл мой шрифт
- выбрал один из символов, который я не собирался использовать
- Меню - > Глиф - > Переименовать Глиф
- изменил имя и индекс Юникода от его исходного значения до "FEFF" (спасибо CommonsWare)
- дважды щелкните по выбранному символу, а затем удалите все линии, из которых был создан этот символ.
- меню - > File - > Generate Font - > save as type otf
В результате я получил обновленный шрифт и проблема ушла.
Я сталкиваюсь с той же проблемой (show boxes ([])) для некоторых специальных символов, когда я пытаюсь показать содержимое, которое приходит из url webservice даже, я не использую android:ellipsize. затем я заменяю код из
textview.settext(content);To
textview.settext(Html.fromHtml(content));Работает нормально.
На самом деле я столкнулся с этой проблемой и вместо того, чтобы изменить шрифт или использовать setText, я просто добавил scrollHorizontally как false, и это исправило дополнительный символ коробки
android:singleLine="true" android:scrollHorizontally="false" android:ellipsize="end"
Арслан, ваш макет отлично работает в моем случае, я проверил то же самое с:
<TextView android:id="@+id/row_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:textSize="18sp" android:ellipsize="end" android:maxLines="1" android:text="This is the demo testing demo testing This is the demo testing demo testing"/>... и получить точный вывод, как вы хотите "одна строка закончилась ...- и коробку надо убрать. Поэтому я думаю, что может быть что-то не так с любым символом или текстом, который вы устанавливаете.
Была аналогичная проблема, с которой я столкнулся в своем проекте, где я использовал тип шрифта для представления текста. немногие типы шрифтов имеют эти проблемы создания ... появляются как [] в конце. Проблема будет решена, если вы попытаетесь изменить шрифт.
Comments