21

Chcę mieć pojedynczą podszewkę TextView, aby pokazać 3 kropki na końcu, gdy tekst jest dłuższy niż TextView. Nie wiem dlaczego - ale nie rozumiem.TextView Ellipsize (...) nie działa

Już owinąłem głowę wokół podobnych pytań StackOverflow, ale skończyło się bez rozwiązania. Może ktoś ma przydatne wskazówki.

<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 powyżej jest zagnieżdżony w 2 innych LinearLayouts. Może to jest ważne, aby wiedzieć. Próbowałem już również atrybutu "singleLine", ale niektórzy twierdzą, że jest to przestarzałe i tak czy inaczej nie działa.

Odpowiedz

38

Dodaj następujące style w swoich stylach plik (zazwyczaj 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> 

Następnie dodać styl @style/autoscroll do TextView:

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

można ponownie użyć funkcji AutoScroll łatwo kiedy chcesz tą drogą.

+2

Ale nie ma wartości stylu dla widoków tekstowych !? –

+2

użyj style = "@ style/autoscroll" zamiast android: style = "@ style/autoscroll" – Deshan

+0

jak mogę używać jako programowo – Riskhan

15

Dodaj ten w xml dla TextView:

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

Jak

 android:singleLine="true" 

jest przestarzała.

+0

Używanie ** maxWidth ** nie jest rozwiązaniem * rozszerzalnym *, a ** singleLine ** jest teraz przestarzałe. Zamiast tego użyj ** ellipsize ** i ** scrollHorizontally **. – Flawyte

+12

Myślę, że doszło do nieporozumienia. Właśnie sprawdziłem 'TextView' w systemie Android i' singleLine' nie jest przestarzałe. – 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

to już działa dla właściwości textview Wszystkiego najlepszego :) – LuminiousAndroid

+7

'ellipsize' nie jest przestarzałe. Z której strony korzystam w celach informacyjnych, właśnie sprawdziłem programistę systemu Android. – Sufian

+0

To błąd, mówiłem o ** singleLine ** not ** ellipsize **. Dzięki za poprawienie. – Flawyte

0

Współpracuje z singleLine="true" ale ten atrybut jest teraz przestarzała, użyj ellipsize i scrollHorizontally="true" zamiast.

+2

Wysłałeś to kilka razy, "ellipsize" i/lub "singleLine" są przestarzałe. Prosimy o udostępnienie dokumentacji w miejscu, w którym jest napisane. Jak już wcześniej wspomniałem, sprawdziłem Androida. – Sufian

+0

Jak już napisałem w moim poście ** singleLine ** jest przestarzała od pewnego czasu, po prostu użyj ** ellipsize ** w połączeniu z 'scrollHorizontally = true', ponieważ żadna z tych 2 nie jest przestarzała i powinna działać. – Flawyte

+0

Cóż, tutaj [to nie jest przestarzałe] (http: // developer.android.com/reference/android/widget/TextView.html#setSingleLine(boolean)). – Sufian

Powiązane problemy