2017-05-31 144 views
-1

有時候,當文字太長而不適合時,文本字符串get會被截斷或重疊。 我怎樣才能檢測到發生這種情況,並且得到了呈現的確切字符串與請求呈現的字符串?
橢圓並不總是繪製。不要問關於內容愚蠢的編輯器。有很多內容,你現在沒有格式化代碼!TextView如何獲取實際呈現的文本?

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");   
        }  
       } 
      } 
    }); 

有時候,文本字符串get被截斷或重疊時,它太長,以適應。我該如何檢測何時發生這種情況,並獲取呈現的確切字符串與要求呈現的字符串?橢圓並不總是繪製。不要詢問關於內容STUPID STACK OVERFLOW編輯器的問題。有很多內容,你現在沒有格式化代碼!我已經把它推到了不止一個水龍頭空間,並且它不會將它識別爲代碼。有人請編輯並告訴我我在這裏做錯了什麼?

回答

0

那麼你肯定可以得到ellipsized(不失色)您TextView的文字:

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

如果文本是一個可掃描這將崩潰。這裏是更多發生的事情:我試圖檢測何時字符串太長。這是什麼在發生:https://stackoverflow.com/questions/44243141/textview-detect-if-string-exceeds-available-space到目前爲止,它只是截斷了spannable,離開了最後一半。它也不會和橢圓。 – gitsensible

+0

如果它截斷了呢?我想要一個返回給我的字符串的方法。整個字符串,而不是它在setText期間傳遞的任何內容(spannable) – gitsensible

+0

我的代碼片斷給了你截斷的文本... – moritzg

相關問題