2015-08-26 3 views
3

Существует TextView внутри ListView.
Я установил maxLine из TextView через дорожку, подобную ребрам.
textView.getLineCount() не работает должным образом

view.textView.setText("....... Long String........."); 
    view.textView.post(new Runnable() { 
     @Override 
     public void run() { 

     if(view.textView.getLineCount > 4) { 
      view.tv_read_more.setVisibility(View.VISIBLE); 
      view.textView.setMaxLines(4); 
     } 
     } 
    }); 

Проблема: textView.setMaxLine() не работает в первый раз.
TextView пострадавшие после ListView прокрутки вниз и выполните прокрутку вверх

+0

Вы пытались вызвать textView.setMaxLines (4) перед textView.setText()? –

+0

Если у моего текста есть более 4 строк, то только я хочу установить maxLine textView. –

+0

Почему вам нужно подсчитывать количество строк, если вы можете ограничить количество строк заранее, используя setMaxLines()? –

ответ

0

попытаться получить видимую часть текста в TextView и проверьте, что равно первоначальный вход, проверить эту тему Get current visible text in textview. Я не пробовал код, но это стоит того. Вы получите что-то вроде этого:

String input = "....... Long String........."; 
view.textView.setMaxLines(4); //this limits the number of lines to 4 
view.textView.setText(input); 

//now check if the text in your textview is completely visible. 
//if not, show ReadMore 
int start = view.textView.getLayout().getLineStart(0); //start position 
int end = view.textView.getLayout().getLineEnd(textView.getLineCount() - 1); //last visible position 

String displayedText = view.textView.getText().toString().substring(start, end); //the piece of text that is in fact visible 

if(displayedText.equals(input){ 
    //text fits entirely in textview 
    view.tv_read_more.setVisibility(View.GONE); 
}else{ 
    //show "read more" 
    view.tv_read_more.setVisibility(View.VISIBLE); 
} 
+0

Хм, хорошо, я работаю над этим сейчас и вернусь после этого. –

+0

NullPointerException at int start = view.textView.getLayout(). GetLineStart (0); –

+1

В этом разделе есть решение для исключения http://stackoverflow.com/questions/16558948/how-to-use-textview-getlayout-it-returns-null –

2

У меня есть пример в RecyclerView, это хорошо работает.

mDes.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
       @Override 
       public boolean onPreDraw() { 
        mDes.getViewTreeObserver().removeOnPreDrawListener(this); 
        int lineCount = mDes.getLineCount(); 
        Log.e("TreeObserver", "onBind: " + lineCount1); 
        if (lineCount1 < 4 || isExpand) { 
         mArrowContainer.setVisibility(View.GONE); 
        } else { 
         mArrowContainer.setVisibility(View.VISIBLE); 
        } 
        return true; 
       } 
      }); 
+0

Спасибо! это сработало! –

+0

Спасибо! это сработало и для меня. – Shailesh

Смежные вопросы