2011-06-28 16 views
5

Zastanawiam się, czy istnieje sposób na zastąpienie ostatnich trzech znaków w TextView za pomocą "...", ale tylko wtedy, gdy bieżący tekst przepełnia TextView. Muszę ograniczyć linię TextView do 1, ale czasami tekst jest za długi i na końcu chciałbym pokazać "...", aby wskazać, że tekst jest dłuższy niż wyświetlany.Wskaźnik przepełnienia tekstu Android TextView?

Dzięki

Odpowiedz

16

Tak. Możesz użyć http://developer.android.com/reference/android/widget/TextView.html#attr_android:ellipsize , aby skonfigurować wyświetlanie "...".

+0

Wow, nie wiedziałem o tym. niesamowite! –

+0

Czy to nie jest po prostu pewność, że obcięte słowo nie jest przecięte w środku? Jak mógłbym zamienić trzy ostatnie znaki na "..."? – Bryan

+1

Jeśli ustawisz max linie na 1 i ustawisz na opcję END, wierzę, że będziesz mieć to, czego szukasz. Alternatywna operacja byłaby bardzo uciążliwa i opierałaby się na szerokości/wysokości czcionki i liczbie znaków, co zasadniczo zmusiłoby użytkownika do określenia prawdopodobnej długości ułożonego tekstu, a następnie obliczenia odcięcia. Naprawdę uważam, że powinieneś spróbować zagrać z tą opcją i grawitacją układu, aby sprawdzić, czy możesz znaleźć praktyczne rozwiązanie, zanim zejdziesz z tego króliczego dołka. –

0

Tak, jest to typowe zadanie o nazwie obcięcie. trzeba by znaleźć maksymalną znaki zdaniem będą pasować (-3 do 3 okresów), a następnie zrobić coś takiego:

int MAX_CHARS = 55; // for example 
TextView tv = (TextView) findViewById(R.id.your_text_view_id); 
if(tv.getText().toString().length >= MAX_CHARS){ 
    tv.setText(tv.getText().toString().substring(0,MAX_CHARS) + "..."); 
} 

Pamiętaj niektóre znaki są szersze niż inne, w zależności od czcionki, dzięki czemu może chcesz spróbować wszystkich wielkich liter Os podczas próby sprawdzenia, co powinien mieć twój MAX_CHARS. (zwykle jedna z szerszych postaci z mojego doświadczenia)

+0

Chciałbym najpierw wypróbować @ nick-campion, a jeśli to nie działa, możesz zrobić coś podobnego. –

+0

android: ellipsize = "end" zrobi to za Ciebie. –

+0

@ Romain-guy powinieneś przygotowywać się na dzisiejsze spotkanie i nie tracić przyzwoitości;) –

Powiązane problemy