Android, Как ограничить ширину TextView (и добавить три точки в конце текста)?
у меня есть TextView
что я хочу ограничить символами. На самом деле, я могу это сделать, но то, что я ищу, - это как добавить три точки (...) в конце строки. Это показывает, что текст имеет продолжение. Это мой XML, но нет точек, хотя это ограничивает мой текст.
<TextView
android:id = "@+id/tvFixture"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_toLeftOf = "@id/ivFixture_Guest"
android:text = "@string/test_06"
android:lines = "1"
android:ems = "3"
android:gravity = "right"
style = "@style/simpletopic.black"
android:ellipsize="end"/>
18 ответов:
удалено:
добавить еще одно свойство
android:singleLine="true"
в вашем Textviewобновление:
android:ellipsize="end" android:maxLines="1"
вот что я узнал, играя с различными вариантами форсирования
TextView
до одной линии (с тремя точками и без них).android: maxLines= "1"
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:text="one two three four five six seven eight nine ten" />
это просто заставляет текст в одну строку. Любой дополнительный Текст скрыт.
по теме:
- android: maxLines
- android: singleLine (Примечание этой и этой)
- android: lines
ellipsize= "end"
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:ellipsize="end" android:text="one two three four five six seven eight nine ten" />
это отсекает текст, который не подходит, но позволяет пользователям знать, что текст был усечен путем добавления многоточия (три точки).
по теме:
- ellipsize=" start" (...aaabbbccc)
- ellipsize= "middle" (aaa...ccc)
- android: эллипсис, значение варианты
ellipsize= "marquee"
<TextView android:id="@+id/MarqueeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:text="one two three four five six seven eight nine ten" />
это делает текст прокрутки автоматически через TextView. Обратите внимание, что иногда он должен быть установлен в коде:
textView.setSelected(true);
якобы
android:maxLines="1"
иandroid:singleLine="true"
должен делать в основном то же самое, и так как singleLine по-видимому, устарел я бы предпочел не использовать его, но когда я вынимаю его, шатер больше не прокручивается. ПринимаяmaxLines
не но все же повлияй на это.по теме:
HorizontalScrollView с scrollHorizontally
<HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/horizontalScrollView"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:scrollHorizontally="true" android:text="one two three four five six seven eight nine ten" /> </HorizontalScrollView>
это позволяет пользователю вручную прокручивать, чтобы увидеть всю строку текста.
Я так понимаю, вы хотите ограничить ширину до одной строки и не ограничивать ее символом? Так как
singleLine
является устаревшим, вы можете попробовать использовать следующее вместе:android:maxLines="1" android:scrollHorizontally="true" android:ellipsize="end"
например. вы можете использовать
android:maxLength="13"
это ограничит длину texview до 13, но проблема в том, если вы попытаетесь добавить 3 точки(...), он не будет отображать его, так как он будет частью длины textview.
String userName; if (data.length() >= 13) { userName = data.substring(0, 13)+ "..."; } else { userName = data; } textView.setText(userName);
помимо этого вы должны использовать
android:maxLines="1"
Я получил желаемый результат с помощью
android:maxLines="2" android:minLines="2" android:ellipsize="end"
трюк имеет значение maxlines, которое minLines и то же значение... и не только android: lines = "2", не делайте трюк. Также вы избегаете каких-либо устаревших атрибутов.
код:
TextView your_text_view = (TextView) findViewById(R.id.your_id_textview); your_text_view.setEllipsize(TextUtils.TruncateAt.END);
xml:
android:maxLines = "5"
например
выход: В Евангелии от Матфея 13, ученики спросили Иисуса, почему он говорит народу притчами. Он ответил: "тебе было дано знать...
вы можете ограничить количество символов вашего textview и добавить (...) после текста. Предположим, вам нужно показать только 5 букв, а затем вам нужно показать (...), Просто сделайте следующее :
String YourString = "abcdefghijk"; if(YourString.length()>5){ YourString = YourString.substring(0,4)+"..."; your_text_view.setText(YourString); }else{ your_text_view.setText(YourString); //Dont do any change }
немного Хак ^_^. Хотя это не очень хорошее решение. Но работа, вокруг которой работал для меня: D
EDIT: Я добавил проверку на меньший характер в соответствии с вашим ограниченным нет. из персонажей.
Я использую Horizonal Recyclerview.
1) здесь, в CardView, TextView искажается по вертикали при использованииandroid:ellipsize="end" android:maxLines="1"
Проверьте жирный TextViews Wyman Group, Jaskolski...
2) но когда я использовал singleLine вместе с ellipsize -
android:ellipsize="end" android:singleLine="true"
Проверьте жирный TextViews Wyman Group, Jaskolski...
2-е решение работало для меня правильно (используя singleLine). Также я протестировал в ОС версия: 4.1 и выше (до 8.0), он работает нормально без каких-либо сбоев.
вам нужно добавить следующие строки в макет для textview
android:maxLines="1" android:ellipsize="end" android:singleLine="true"
надеюсь, что это работает для вас.
для работы с android: ellipsize атрибут, вы должны ограничить ширина макета на TextView, таких, что текст находится вне пределов видимости TextView.
и android: layout_width атрибут играет здесь ключевую роль, установите его соответственно.
один пример можно:
<TextView android:layout_width="120dp" android:layout_height="wrap_content" android:ellipsize="end" android:text="This is a very long text to be displayed" android:textSize="12sp" android:maxLines="1" />
теперь, вот если текст in android: text= "это очень длинный текст, который будет отображаться" выходит из поля зрения из TextView с android: layout_width= "120dp",android: ellipsize= "end" обрежет текст и место ...(3 точки) после него. то есть это очень долго... будет отображаться в TextView.
Я думаю, что вы исправить высоту и ширину текстового представления. Тогда ваше решение будет работать.
подход @AzharShaikh работает отлично.
android:ellipsize="end" android:maxLines="1"
но я понимаю, что проблема в том, что TextView будет усечен словом (по умолчанию). Показать, если у нас есть текст, как:
тест long_line_without_any_space_abcdefgh
в поле TextView отображается:
просто
android: layout_width= "wrap_content"
используйте это ниже строки
android: layout_width= "match_parent"
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_toRightOf="@+id/visitBox" android:orientation="vertical" > <TextView android:id="@+id/txvrequestTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:text="Abcdefghighiklmnon" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/orange_color" /> </LinearLayout>
вы можете сделать это
xml
:<TextView android:id="@+id/textview" android:maxLines="1" // or any number of lines you want android:ellipsize="end" />
использовать
android:singleLine="true"
android:maxLines="1"
app:layout_constrainedWidth="true"
это как мой полный
TextView
выглядит так:<TextView android:id="@+id/message_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="5dp" android:maxLines="1" android:singleLine="true" android:text="NAME PLACEHOLDER MORE Text" android:textColor="@android:color/black" android:textSize="16sp" android:textStyle="bold" app:layout_constrainedWidth="true" app:layout_constraintEnd_toStartOf="@id/message_check_sign" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toEndOf="@id/img_chat_contact" app:layout_constraintTop_toTopOf="@id/img_chat_contact" />