Що означає еліпсис в 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
btw: власне слово "еліпсис" складено. Це називається "дієслів іменника" і є поширеним способом формування комп'ютерного жаргону. Іменник - "еліпс", який, я вважаю, ви знаєте, і він перетворюється на дієслово, додаючи закінчення "-ize", що означає "зробити в", так що ви можете зробити висновок, що "ellipsize" є "додати еліпс до щось ».
Майкл Еденфілд

4
Стара орфографічна помилка, ніколи не виправлена. Термін насправді повинен бути "еліпсисом". Еліпс - це крива на площині, що оточує дві фокусні точки, таким чином, що пряма лінія, проведена від однієї з фокусних точок до будь-якої точки кривої. Еліпсис - це три крапки.
radley

Документація ellipseSize ще не містить опису.
Талха

досі розрізає слова навпіл. Мені потрібні слова, щоб залишитися в одному творі. чорт забирай
filthy_wizard

Відповіді:


388

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

Виходячи з вашої вимоги, ви можете спробувати відповідно до варіанту.

" Еліпсизація" , неологізм, означає скоротити текст за допомогою еліпсису , тобто три крапки ...або частіше лігатури , щоб виступити за опущені біти.

Скажімо, оригінальне значення перегляду тексту pf - це aaabbbccc та його вміщення всередині подання

startВихід буде: ... bccc

endВихід буде: aaab ...

middleВихід буде: аа ... куб

marqueeВихідним результатом буде: aaabbbccc автоматичне ковзання справа наліво


Дякую. Але я вже це читав. Він використовує слово "еліпсизоване", де я шукаю його значення. Слово не можна використовувати у своєму визначенні !! Будь-яке подальше пояснення, будь ласка?
Hamzeh Soboh

60

на мій досвід, Еліпсіс працює лише у тому випадку, якщо встановлено нижче двох атрибутів.

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

що стосується ширини перегляду тексту, то обоє "wrap_content" чи "match_parent" мають бути хорошими.


2
Насправді android:singleLineзастаріли з 3 рівня API, тому замість цього використовуйте android:maxLines. Зверніть увагу:> якщо постачаються одномісний і вхідний тип, прапори inputType замінять значення singleLine. Ознайомтеся з документами на R.attr.html # SingleLine
Filipe Bezerra de Sousa

1
@AlbertoGaona Я помітив, що він не працює, якщо android: ellipsize = "start" та android: maxLines = "2" (або більше). Я не бачив жодних крапок на початку, хоча текст був занадто довгим.
ka3ak

17

How to Add an ellipsis in a TextView

android: ellipsize додано в 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', 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
Майкл Osofsky

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.