Что значит Ellipsize в Android?


199

Я добавил EditText к своему макету, добавил подсказку и сделал его по центру.

При запуске приложения подсказка была невидимой. Я обнаружил, что должен сделать ellipsizeзначение, TextViewчтобы быть start:

<EditText
    android:id="@+id/number1EditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="start"
    android:ems="10"
    android:gravity="center_horizontal"
    android:hint="@string/hint1" />

В документации Android я читаю:

Если установлено, слова,
длина которых превышает ширину представления, будут иметь эллиптический размер вместо разбитых в середине.

Проблема в том, что ellipsizeне найден в словаре. Кто-нибудь может объяснить мне, какие преимущества мы можем получить по ellipsizeпризнаку? А в чем разница между start, end, middle?


пожалуйста, обратитесь мой обновленный ответ.
Ринкал Бхандери

2
кстати: само слово «эллипсис» придумано. Это называется "глагол существительного" и является распространенным способом формирования компьютерного жаргона. Существительное «эллипс», которое, я полагаю, вы знаете, и оно превращается в глагол путем добавления окончания «-ize», что означает «превращать в», так что вы можете сделать вывод, что «эллипсис» означает «добавить эллипс к что-то".
Майкл Иденфилд

4
Старая орфографическая ошибка, никогда не исправленная. Термин должен быть «многоточием». Эллипс - это кривая на плоскости, которая окружает две точки фокусировки, так что прямая линия проходит от одной из точек фокусировки к любой точке на кривой. Многоточие - это три точки.
Рэдли

В документации по ellipseSize все еще отсутствует описание.
Талха

все еще разрезает слова пополам для меня. Мне нужны слова, чтобы остаться в целости и сохранности. черт возьми
filthy_wizard

Ответы:


388

Вы можете найти документацию здесь .

На основании ваших требований вы можете попробовать в соответствии с вариантом.

ellipsize , неологизм, означает сокращение текста, используя многоточие , то есть три точки ...или более часто лигатуры , чтобы заменить пропущенные биты.

Скажем, исходное значение текстового представления aaabbbccc и его подгонка внутри представления

startвывод будет: ... BCCC

endвывод будет: аааб ...

middleвывод будет: aa ... cc

marqueeвывод будет: aaabbbccc авто скольжения справа налево


Спасибо. Но я уже читал это. Он использует слово «многоточие», где я ищу его значение. Слово не может быть использовано в его определении! Любое дальнейшее объяснение, пожалуйста?
Хамзех Собох

60

по моему опыту, Ellipsis работает, только если установлены два атрибута ниже.

android:ellipsize="end"
android:singleLine="true"

для ширины textview хорошо подойдут как wrap_content, так и match_parent.


2
На самом деле android:singleLineустарела начиная с уровня API 3, поэтому вместо этого используйте android:maxLines. Обратите внимание:> если указаны и singleLine, и inputType, флаги inputType переопределяют значение singleLine. Проверьте документы в R.attr.html # singleLine
Филипе Безерра де Соуза,

1
@AlbertoGaona Я заметил, что это не работает, если android: ellipsize = "start" и android: maxLines = "2" (или больше). Я не видел точек в начале, хотя текст был слишком длинным.
ka3ak

17

How to Add an ellipsis in a TextView

Android: многоточие добавлено в API уровня 1. Многоточие - три периода подряд. (...)

В вашем XML

 <TextView
       ....
       android:text="Hi I am Amiyo,you can see how to ellipse works."
       android:ellipsize = "end"  
   />

На этом этапе многоточие еще не будет отображаться, поскольку TextView настроен на автоматическое расширение по умолчанию при вводе нового текста. Вам нужно будет каким-то образом ограничить TextView. Сделайте это, вы можете использовать либо добавить в свойTextView a scrollHorizontally, minLines, or maxLines иметь отображение многоточия.

Чтобы сделать эллипс:

    at the end: this is how it would...     
   use: android:ellipsize = "end"

И

 in the middle: this is ...how it would
use: android:ellipsize = "middle"

И

 at the start: ...this is how it would
use: android:ellipsize = "start"

И

 to have no ellipse
use: android:ellipsize = "none"

Обратите внимание, пожалуйста:

 Do not use android:singeLine = "true", it is deprecated.
android:maxLines = "1" will not display the three dots (...)
android:lines = "1" will not display the three dots (...)

Для более подробной информации вы можете посетить здесь

http://developer.android.com/reference/android/widget/TextView.html#attr_android%3aellipsize


10

многоточие три периода подряд ...

TextView будет использовать многоточие, когда он не может развернуться, чтобы показать весь его текст. Атрибут ellipsizedустанавливает положение трех точек, если это необходимо.


5

Текст:

 This is my first android application and
 I am trying to make a funny game,
 It seems android is really very easy to play.

Предположим, выше указан ваш текст, и если вы используете атрибут ellipsize's', startон будет выглядеть так

This is my first android application and
...t seems android is really very easy to play.

с endатрибутом

 This is my first android application and
 I am trying to make a funny game,...

3

Вот пример того, как работает ellipsize без использования устаревших android:singleLine="true"в ConstraintLayout:

<TextView
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:textSize="13sp"
   android:ellipsize="end"
   android:maxLines="2"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintStart_toStartOf="parent"
   tools:text="long long long long long long text text text" />

помните, если у вас есть текст, который должен быть в одной строке, то измените maxLines на 1.


Спасибо, это решение исправило мою проблему. Ключ android:layout_width="0dp"вместо android:layout_width="wrap_content". Обратите внимание, что это применимо, потому что я использую ConstraintLayout. Также здесь обсуждается stackoverflow.com/a/48149405/2848676
Майкл Ософски

1

Примечание: ваш текст должен быть больше, чем поле контейнера, чтобы выделилось следующее:

 android:ellipsize="marquee"    

1

Установите это свойство для редактирования текста. Elipsize работает с отключением редактирования текста

android:lines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
android:singleLine="true"
android:editable="false"

или setKeyListener (null);


установить выше упомянутые все свойства и setKeyListener (null), кроме редактируемого свойства.
Мубарак

0

Используйте многоточие, когда у вас есть фиксированная ширина, тогда он автоматически обрежет текст и покажет многоточие в конце,

Это не будет работать, если вы установите layout_width как wrap_content & match_parent.

android:width="40dp"
android:ellipsize="end"
android:singleLine="true"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.