Ответ 1
Try:
android:singleLine="true"
У меня есть набор TextView для ellipsize, но когда я помещаю текст в него, это не делает. Любые идеи?
<TextView
android:id="@+id/LegalsView"
android:ellipsize="end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium" />
Try:
android:singleLine="true"
android:layout_width="wrap_content"
позволит TextView
расширяться до тех пор, пока это необходимо (включая запуск экрана). Чтобы сделать его эллипсисом, вам нужно будет установить ширину, как рекомендуется для подключения к гражданину, желательно с android:layout_width="fill_parent"
вместо абсолютного значения.
Дополнительные подсказки: вы также хотите установить maxLines TextView
(возможно, 1), и чтобы получить фактический многоточий ( "..." ), вы, вероятно, также должны будете установить
android:scrollHorizontally="true"
Вам нужно соответствовать настройкам для Android, чтобы правильно рассчитать положение объекта. Имеет несколько возможных комбинаций и зависит от остальной части макета в одной строке.
Это комбинация, которая работает:
android:layout_width="0dip" // dynamic width
android:layout_weight="1" // less weight, other objects still "0"
android:ellipsize="end" // ... into end of text (right)
android:singleLine="true" // one line, deprecated, but necessary for some ambients
android:maxLines="1" // one line, new mode
В целом вы указываете вес, если используете динамический макет или только фиксированный размер, тогда указывается только одна строка и настраивается, как отображается "...".
Единственный способ, которым я смог выполнить эту работу, - установить width="1dp"
, weight="1"
, ellipsize="end"
, maxLines="1"
и scrollHorizontally="true"
. Первые два имеют такой же эффект, что и width="match_parent"
без расширения виджета, выходящего за пределы экрана, остальные три настройки должны были быть сделаны, чтобы получить текст для эллипсирования.
Мое приложение начало игнорировать maxlines и ellipsize, когда я добавил
android:textIsSelectable="true"
Кажется, что эти параметры несовместимы.
Если вы пытаетесь заставить многострочный многоточие работать, к сожалению, он работает не очень хорошо. Это известная ошибка на платформе Android, и насколько я знаю, она не была исправлена.
В TextView
лучшее, что вы можете получить, - это 2 эллипсинга линий (что может быть достигнуто установкой
android:maxLines="2"
Обратитесь к этой ссылке.
Даже с абсолютной шириной, как указано в другом ответе, она все еще дает вам максимум, 2 линии эллипса. (Но, как уже упоминалось, однолинейный эллипс достигнут). Так, например, ваш текст может заполнить ваш 8-строчный TextView, но будет выглядеть так, когда вы включаете многоточие:
+---------------------------------------------------+ | | | This is my cool text that is supposed to fill the | | entire textview but unfortunately because of t... | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------------------------------------------+
Если вы знаете размер вашего TextView, вы можете использовать настраиваемый компонент здесь (к сожалению, проект проекта Google, который первоначально размещал его похоже, исчез, поэтому эта ссылка - все, что я мог найти).
Если вы не определяете определенную ширину для вашего TextView
, текст будет сначала эллипсироваться, когда ваш текст достигнет ширины родительского представления.
Это решение работает:
android:ellipsize="end"
android:singleLine="false"
android:lines="3"
android:maxLines="3"
Ширина также может быть установлена на "wrap_content"
Вы меняете layout_width на определенный dp вместо wrap_content
и
использовать
андроид: SingleLine = "истина"
Android: ellipsize = "конец"
код:
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="check this text"
android:id="@+id/textView"
android:singleLine="true"
android:ellipsize="end"/>
Выполняет только время выполнения, делает что-то вроде этого:
textView.setEllipsize(TruncateAt.END);
textView.setLines(1);
textView.setHorizontallyScrolling(true);
textView.setText("Long text goes here");
Вы также можете установить maxLines следующим образом:
<TextView
android:id="@+id/txt_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:ellipsize="end"
android:textStyle="bold"/>
Эллипсы появляются, когда текст превышает набор maxLines.
Вы можете использовать этот код для прокрутки текста в textView:
textView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
textView.setSingleLine();
textView.setMarqueeRepeatLimit(10);
textView.setFocusable(true);
textView.setHorizontallyScrolling(true);
textView.setFocusableInTouchMode(true);
textView.requestFocus();
Я думаю, вам нужно указать абсолютную ширину для работы.
android:layout_width="100dip"
или
android:layout_width="fill_parent"