21

Tôi muốn có một đơn lót TextView để hiển thị 3 dấu chấm ở cuối khi văn bản dài hơn TextView. Tôi không biết tại sao - nhưng tôi không hiểu.TextView Ellipsize (...) không hoạt động

Tôi đã bao quanh đầu của tôi xung quanh các câu hỏi StackOverflow tương tự, nhưng tôi đã kết thúc mà không có giải pháp. Có lẽ ai đó có một số gợi ý hữu ích.

<LinearLayout 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:textStyle="bold" 
     android:text="Full Name" 
     android:layout_height="wrap_content" 
     android:textSize="16sp" 
     android:layout_width="wrap_content" 
     android:id="@+id/lName" 
     android:layout_gravity="center_vertical" 
     android:maxLines="1" 
     android:ellipsize="end"/> 
</LinearLayout> 

LinearLayout ở trên được lồng vào 2 khác LinearLayouts. Có lẽ điều này là quan trọng để biết. Tôi cũng đã thử thuộc tính "singleLine", nhưng một số nói rằng điều này không được chấp nhận và nó không hoạt động.

Trả lời

38

Thêm phong cách sau đây trong phong cách của bạn tập tin (thường styles.xml):

<style name="autoscroll"> 
    <item name="android:singleLine">true</item> 
    <item name="android:ellipsize">marquee</item> 
    <item name="android:marqueeRepeatLimit">marquee_forever</item> 
    <item name="android:focusable">true</item> 
    <item name="android:focusableInTouchMode">true</item> 
    <item name="android:scrollHorizontally">true</item> 
</style> 

Sau đó, thêm phong cách @style/autoscroll-TextView của bạn:

<TextView android:id="@+id/lName" 
     style="@style/autoscroll" /> 

Bạn có thể tái sử dụng tính năng autoscroll của bạn một cách dễ dàng khi bạn muốn cách này.

+2

Nhưng không có giá trị kiểu cho TextView !? –

+2

sử dụng kiểu = "@ style/autoscroll" thay vì android: style = "@ style/autoscroll" – Deshan

+0

làm cách nào để tôi có thể sử dụng như một chương trình – Riskhan

15

Thêm này trong xml của bạn cho TextView:

 android:maxWidth="200dp" 
     android:maxLines="1" 

Như

 android:singleLine="true" 

bị phản đối.

+0

Sử dụng ** maxWidth ** không phải là giải pháp * mở rộng * và ** singleLine ** hiện không còn được dùng nữa. Sử dụng ** ellipsize ** & ** scrollHorizontally ** để thay thế. – Flawyte

+12

Tôi nghĩ rằng đó là một sự hiểu lầm. Tôi vừa kiểm tra 'TextView' tại Android dev và' singleLine' không được chấp nhận. – Sufian

7
android:id="@+id/lName" android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:singleLine="true" 
    android:text="Avinljhakjhsajkhakjshda" 
    android:textSize="16sp" 
+0

điều này đã hoạt động đối với thuộc tính chế độ xem văn bản Tất cả tốt nhất :) – LuminiousAndroid

+7

'ellipsize' KHÔNG được dùng nữa. Bạn sử dụng trang web nào để tham khảo, tôi vừa kiểm tra Android dev. – Sufian

+0

Đó là một sai lầm, tôi đã nói về ** singleLine ** not ** ellipsize **. Cảm ơn bạn đã sửa nó. – Flawyte

0

Nó hoạt động với singleLine="true" nhưng thuộc tính này hiện đang bị phản đối, sử dụng ellipsizescrollHorizontally="true" để thay thế.

+2

Bạn đã đăng vài lần, 'ellipsize' và/hoặc' singleLine' không được dùng nữa. Vui lòng chia sẻ tài liệu mà nó nói như vậy. Như tôi đã nói trước đây, tôi đã kiểm tra Android dev. – Sufian

+0

Như tôi đã nói trong bài ** singleLine ** của tôi không được chấp nhận kể từ một thời gian, chỉ cần sử dụng ** ellipsize ** kết hợp với 'scrollHorizontally = true', vì không có cái nào trong số 2 bị phản đối và nó sẽ hoạt động. – Flawyte

+0

Vâng, tại đây [nó không được chấp nhận] (http: // nhà phát triển.android.com/reference/android/widget/TextView.html#setSingleLine (boolean)). – Sufian

Các vấn đề liên quan