Android: TextView จะตัดและแทนที่ 3 อักขระสุดท้ายของ String โดยอัตโนมัติ


133

ถ้า a StringยาวเกินTextViewความกว้างของมันจะห่อเข้าบรรทัดถัดไปโดยอัตโนมัติ ฉันสามารถหลีกเลี่ยงปัญหานี้โดยใช้android:singleLine(เลิกใช้) android:inputType="text"หรือโดยการตั้งค่า สิ่งที่ฉันต้องการตอนนี้คือสิ่งที่แทนที่อักขระ 3 ตัวสุดท้ายของฉันStringด้วย " ... " เนื่องจากฉันไม่ได้ใช้แบบอักษร monospace สิ่งนี้จะแตกต่างกันไปขึ้นอยู่กับตัวอักษรที่ใช้ในStringไฟล์. ดังนั้นฉันจึงสงสัยว่าวิธีใดดีที่สุดในการดึงอักขระ 3 ตัวสุดท้ายของ String TextViewมาแทนที่ อาจจะมีบางอย่างที่ใช้งานในเฟรมเวิร์กของ Android อยู่แล้วเนื่องจากนี่จะต้องเป็นปัญหาที่พบบ่อย

คำตอบ:


292

คุณควรจะสามารถใช้คุณสมบัติ "ellipsize" ของมุมมองข้อความ:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

คุณอาจต้องใช้ค่าแรงโน้มถ่วงกับเค้าโครงด้วย บางครั้งฉันเคยเห็นมุมมองแบบ "ยืดอัตโนมัติ" โดยไม่มีมุมมองเหล่านี้


สมบูรณ์ ขอบคุณ ฉันเคยลองมาก่อน แต่ไม่ได้ผลเพราะฉันใช้ android: inputType = "text" แทน android: singleLine = "true" (ซึ่งควรจะเลิกใช้งาน) แต่ตอนนี้ฉันจะติด android: singleLine = "true" ขอบคุณมาก ๆ.
znq

44
มันยังไม่เพิ่มเครื่องหมาย "... " สำหรับฉันคำถามนี้ยังไม่สามารถตอบได้ทั้งหมด! คำตอบนี้จะทำให้ "short verylongword" เป็นเพียง "short" ไม่ใช่ "short verylon ... " ยิ่งไปกว่านั้นพวกคุณแนะนำให้ใช้แอตทริบิวต์ที่เลิกใช้แล้ว
OneWorld

7
ใช้งานได้ดี แต่ singleLine เลิกใช้งานแล้วดังนั้นคุณต้องใช้ maxLines = "1" แทน ด้านข้างจุดไข่ปลาใช้งานได้กับหลายบรรทัดเช่นกัน!
Torre Lasley

4
singleLine เลิกใช้งานแล้ว ใช้ maxLines = "1" เพียงแสดงความคิดเห็นสำหรับคำตอบเก่า
Ewoks

1
MaxLine = 1 จะตัดข้อความที่อยู่ตรงกลาง SingleLine = True ทำงานตามที่คาดไว้
งู

33

พบการทำงานที่น่าสนใจสำหรับปัญหานี้

maxLines=1
ellipsize=end
scrollHorizontally=true

เคล็ดลับคือข้อความสุดท้ายเกี่ยวกับการเลื่อนในแนวนอน .... ตรวจสอบดู อย่างน้อยก็ใช้งานได้บน v2.2


น่าสนใจ ... น่ารู้. ขอขอบคุณ Marco สำหรับความคืบหน้า
BonanzaDriver

4

โดยทางโปรแกรมคุณสามารถใช้:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.