Ответ 1
Устаревшие:
Добавьте еще одно свойство android:singleLine="true"
в текстовое окно
Обновлено:
android:ellipsize="end"
android:maxLines="1"
У меня есть 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"/>
Устаревшие:
Добавьте еще одно свойство android:singleLine="true"
в текстовое окно
Обновлено:
android:ellipsize="end"
android:maxLines="1"
Следующее - это то, что я узнал, играя с различными параметрами для принудительного TextView
для одной строки (с тремя точками и без них).
<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" />
Это просто принуждает текст к одной строке. Любой дополнительный текст скрыт.
по теме:
<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" />
Это сокращает текст, который не подходит, но позволяет пользователям знать, что текст был усечен добавлением многоточия (три точки).
по теме:
<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 явно устарел, я бы предпочел не использовать его, но когда я его принимаю out, область выделения больше не прокручивается. Однако вывод maxLines
не влияет на него.
по теме:
<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>
Это позволяет пользователю вручную прокручивать, чтобы увидеть всю строку текста.
Попробуйте это свойство TextView в вашем файле макета.
android:ellipsize="end"
android:maxLines="1"
Я так понимаю, вы хотите ограничить ширину одной строкой, а не ограничивать ее символом? Поскольку singleLine
устарел, вы можете попробовать использовать следующее:
android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
например. вы можете использовать
android:maxLength="13"
это ограничит длину texview до 13, но проблема в том, что если вы попытаетесь добавить 3 точки (...), она не отобразит ее, так как она будет частью длины текста.
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 ученики спросили Иисуса, почему Он говорил с толпами в притчах. Он ответил: "Дано вам знать тайны Царства Небесного, но им не дано.
Вывод: В Евангелии от Матфея 13 ученики спросили Иисуса, почему Он говорил с толпами в притчах. Он ответил: "Это было дано вам знать...
Вы можете ограничить количество текстовых символов и добавить (...) после текста. Предположим, вам нужно показать только 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"
Проверьте смелые текстовые представления Wyman Group, Jaskolski...
2-е решение сработало у меня правильно (с помощью singleLine). Также я протестировал в версии ОС: 4.1 и выше (до 8.0), она работает нормально, без сбоев.
Вам нужно добавить следующие строки в свой макет для textview
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
Надеюсь, это сработает для вас.
Чтобы работать с атрибутом android: эллипсис, вы должны ограничить ширину макета макета 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"
/>
Теперь, если текст в android: text = "Это очень длинный текст, который будет отображаться" выходит из поля зрения TextView с помощью android: layout_width = "120dp" , android: ellipsize = "end" обрезает текст и помещает ... (3 точки) после него. т.е. Это очень длинный... будет отображаться в TextView.
Я думаю, что вы даете высоту и ширину текста. Тогда ваше решение будет работать.
вы можете написать эту строку в xml, где вы берете textview
:
android:singleLine="true"
Добавьте эти две строки в текст
android:ellipsize="end"
android:singleLine="true"
Подход @Ажаршайха отлично работает.
android:ellipsize="end"
android:maxLines="1"
Но я понимаю, что TextView будет усечен словом (по умолчанию). Покажите, есть ли у нас текст:
test long_line_without_any_space_abcdefgh
TextView отобразит:
тест...
И я нашел решение для решения этой проблемы, заменив пробелы символом пробела unicode без прерывания, он превращает TextView в символы вместо слов:
yourString.replace(" ", "\u00A0");
Результат:
test long_line_without_any_space_abc...
использование
android:singleLine="true"
android:maxLines="1"
app:layout_constrainedWidth="true"
TextView
выглядит мой полный 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" />
Вы просто измените
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"
/>
<TextView
android:id="@+id/product_description"
android:layout_width="165dp"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="Pack of 4 summer printed pajama"
android:textColor="#d2131c"
android:textSize="12sp"
android:maxLines="2"
android:ellipsize="end"/>