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: линии
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)
- эллиптизации="средний" ("ААА"...ccc)
- андроид: Ellipsise , смысл опции
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
out не делает хотя, повлияй на это.
по теме:
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: Я добавил проверку на меньший характер в соответствии с вашим ограниченным нет. характеров.
Я использую горизонтальный 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). Также я тестировал в OS версия: 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" />