Что значит 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

IntelliJ Amiya
источник
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,...
Subodh
источник
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.

MojAmiri
источник
Спасибо, это решение исправило мою проблему. Ключ 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"
Мутураман Сундарадж
источник