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?


โปรดดูคำตอบที่อัปเดตของฉัน
Rinkal Bhanderi

2
btw: คำที่แท้จริง "รูปไข่" ถูกสร้างขึ้น มันเรียกว่า "verbing คำนาม" และเป็นวิธีการทั่วไปในรูปแบบศัพท์แสงคอมพิวเตอร์ คำนามคือ "วงรี" ซึ่งฉันคิดว่าคุณรู้และมันกลายเป็นคำกริยาโดยการเพิ่ม "-ize" ตอนจบซึ่งหมายความว่า "ทำให้เป็น" เพื่อให้คุณสามารถอนุมานว่า "วงรี" คือ "เพื่อเพิ่มวงรีไป บางสิ่งบางอย่าง"
Michael Edenfield

4
ความผิดพลาดในการสะกดคำเก่าไม่เคยแก้ไข คำนี้ควรจะเป็น "จุดไข่ปลา" วงรีเป็นเส้นโค้งบนระนาบที่ล้อมรอบจุดโฟกัสสองจุดเช่นเส้นตรงที่ลากจากจุดโฟกัสจุดใดจุดหนึ่งไปยังจุดใด ๆ บนเส้นโค้ง จุดไข่ปลาเป็นสามจุด
radley

เอกสารของ ellipseSize ยังไม่มีคำอธิบาย
Talha

ยังตัดคำครึ่งหนึ่งสำหรับฉัน ฉันต้องการคำที่จะอยู่ในชิ้นเดียว แช่งมัน
filthy_wizard

คำตอบ:


388

คุณสามารถค้นหาเอกสารที่นี่

ตามความต้องการของคุณคุณสามารถลองตามตัวเลือก

เพื่อellipsize , ศัพท์หมายถึงข้อความสั้นลงโดยใช้จุดไข่ปลาคือจุดสามจุด...หรือมากกว่าปกติรัดเพื่อยืนอยู่ในบิตที่ถูกตัดออก

บอกว่าค่าเดิม PF มุมมองข้อความเป็นaaabbbcccและเหมาะสมภายในมุมมอง

startผลลัพธ์จะเป็น: ... bccc

endผลลัพธ์ของจะเป็น: aaab ...

middleเอาท์พุตจะเป็น: aa ... cc

marqueeเอาต์พุตจะเป็น: aaabbbcccเลื่อนอัตโนมัติจากขวาไปซ้าย


ขอบคุณ แต่ฉันได้อ่านแล้ว มันใช้คำว่า "รูปไข่" ที่ฉันค้นหาความหมายของมัน คำนี้ไม่สามารถใช้ในความหมายของมัน !! มีคำอธิบายเพิ่มเติมโปรด?
Hamzeh Soboh

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
Filipe Bezerra de Sousa

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

นี่คือตัวอย่างเกี่ยวกับวิธีการทำงานของรูปไข่โดยไม่ใช้เลิก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);


set ข้างต้นกล่าวถึงคุณสมบัติทั้งหมดและ setKeyListener (null) ยกเว้นคุณสมบัติที่แก้ไขได้
Mubarak

0

ใช้รูปไข่เมื่อคุณมีความกว้างคงที่จากนั้นมันจะตัดทอนข้อความโดยอัตโนมัติและแสดงรูปไข่ตอนท้าย

มันจะไม่ทำงานหากคุณตั้งค่า layout_width เป็น wrap_content & match_parent

android:width="40dp"
android:ellipsize="end"
android:singleLine="true"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.