2017-05-31 142 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

相关问题