2017-05-31 4 views
-1

Manchmal wird Textstring abgeschnitten oder verdunkelt, wenn es zu lang ist. Wie kann ich erkennen, wann dies passiert ist und auch die genaue Zeichenfolge, die gerendert wird, angefordert wird, um gerendert zu werden?
Ellipse wird nicht immer gezeichnet. Hören Sie auf, über den dummen Herausgeber des Inhalts zu fragen. Es gibt viele Inhalte und Sie formatieren den Code jetzt überhaupt nicht!TextView Wie bekomme ich Text, der tatsächlich gerendert wird?

final ViewTreeObserver obs = viewHolder.myTextView.getViewTreeObserver(); 
obs.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

    @Override 
    public void onGlobalLayout() {  
      Layout l = viewHolder.myTextView.getLayout();  
      if (l != null) {    
       int lines = l.getLineCount();    
       if (lines > 0) {    
        if (l.getEllipsisCount(lines-1) > 0) {     
         LazLog.d(PaginatorAdapter.class.getSimpleName(), "Text is ellipsized");   
        }  
       } 
      } 
    }); 

Manchmal wird Text String abgeschnitten oder verdunkelt, wenn es zu lang ist. Wie kann ich feststellen, wann dies passiert ist und auch die genaue Zeichenfolge, die gerendert wird, angefordert werden, um gerendert zu werden? Ellipse wird nicht immer gezeichnet. Hören Sie auf, nach Inhalten zu fragen. STUPID STACK OVERFLOW Editor. Es gibt viele Inhalte und Sie formatieren den Code jetzt überhaupt nicht! Ich habe es über mehr als einen Tap-Bereich geschoben und es wird nicht als Code erkannt. Jemand bitte editieren und mir sagen, was ich hier falsch gemacht habe ????

Antwort

0

Nun können Sie sicher ellipsized (nicht verfinstert) Text Ihrer TextView erhalten:

String text = (String) textView.getText().subSequence(textView.getLayout().getEllipsisStart(0), textView.getText().length()); 
+0

Dies wird abstürzen, wenn der Text ein scanbare ist. Hier ist mehr, was passiert: https: //stackoverflow.com/questions/44243141/textview-detect-if-string-exceeds-available-space Ich versuche zu erkennen, wenn die Zeichenfolge zu lang ist. Bis jetzt schneidet es nur das spannbare ab und lässt die letzte Hälfte weg. Es tut auch nicht und Ellipse. – gitsensible

+0

Was passiert, wenn es stattdessen abgeschnitten wird? Ich möchte eine Methode, die mir die Zeichenfolge zurückgibt, die gerendert wird. Die ganze Zeichenfolge im Gegensatz zu was auch immer es während setText übergeben wurde (spannbar) – gitsensible

+0

Mein Code-Snippet gibt Ihnen den abgeschnittenen Text ... – moritzg

Verwandte Themen