2012-03-26 16 views
5

W mojej aplikacji mam ellipsize d mój TextView tak, że jeśli tekst jest zbyt duży, będzie to pokazać ... na koniec przy użyciu android:ellipsize="end".TextView android: ellipsize = „end” problem

npTekst ABCDEFGHIJKLMNOPQRSTUVWXYZ jest wyświetlany jako ABCDEFGHIJ.... Ale gdy tekst jest mały, jak na przykład ABCDEF, nadal pokazuje ... na końcu, dzięki czemu tekst wygląda jak AB.... Nie mogę poprawić szerokości widoku tekstowego, ponieważ ten sam widok tekstowy jest używany w innym miejscu z różnymi wymaganiami dotyczącymi szerokości. Co powinienem zrobić, aby działał i pokazywał tylko wtedy, gdy tekst jest wystarczająco duży.

+0

pokaż nam XML, którego używasz do wyświetlenia tekstu. Mam wrażenie, że używasz 'android: layout_width =" wrap_content "' – Blundell

+0

Możesz spróbować z android: ellipsize = "marquee". – YuviDroid

+0

z 'android: layout_width =" wrap_content "' nadal nie powinien elipsoidować tekstu ... Może dowolne kontenery nadrzędne mają ograniczenia szerokości .. – pleerock

Odpowiedz

12

// W swojej TextView

dodaj poniżej przypisuje również

android:maxEms="8" 
android:singleLine="true" 

UWAGA: można dostosować wielkość EMS ilu znaków chcesz pokazać.

+2

Wielkie dzięki. To załatwia sprawę. – Rajkiran

+2

Przydatna odpowiedź. EMS nie przekształca się jednak bezpośrednio w liczbę znaków. –

1
txtvw.setText("The Indian economy is the world's eleventh-largest by nominal GDP and third-largest by purchasing power parity (PPP). " + 
       "  Following market-based economic reforms in 1991, India became one of the fastest-growing major economies; " + 
       "  it is considered a newly industrialised country. However, it continues to face the challenges of poverty, illiteracy, corruption, malnutrition, and inadequate public healthcare. " + 
       "  A nuclear weapons state and a regional power, it has the third-largest standing army in the world and ranks ninth in military expenditure among nations." + 
       "  India is a federal constitutional republic governed under a parliamentary system consisting of 28 states and 7 union territories. " + 
       "  India is a pluralistic, multilingual, and multiethnic society. " + 
       "  It is also home to a diversity of wildlife in a variety of protected habitats."); 
     ViewTreeObserver vto = txtvw.getViewTreeObserver(); 
     vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

      @Override 
      public void onGlobalLayout() { 
       ViewTreeObserver obs = txtvw.getViewTreeObserver(); 
       obs.removeGlobalOnLayoutListener(this); 
       if(txtvw.getLineCount() > 1){ 

        int lineEndIndex = txtvw.getLayout().getLineEnd(1); 
        String text = txtvw.getText().subSequence(0, lineEndIndex-3)+"..."; 
        txtvw.setText(text); 

       } 

      } 
     }); 
+0

to zmniejsza moją liczbę linii do 2. może być również ustawiona na 3 linie. i elipsa też działa dobrze. –

Powiązane problemy