2017-04-13 106 views
0

我想知道如何獲得TextView的行數。 我的意思是,我知道他們有這個下面的代碼:如何獲取TextView的實際行數?

textview.setText(「Some text」); 
textview.post(new Runnable() { 
    @Override 
    public void run() { 
     int lineCount = textview.getLineCount(); 
     logw("Test", "Number of line :" + lineCount); 
    } 
}); 

在這裏,你可以找到我的xml:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:maxLines="3" 
    android:text="Procedente igitur mox tempore cum adventicium nihil inveniretur, relicta ora maritima in Lycaoniam adnexam Isauriae se contulerunt ibique densis intersaepientes itinera pr"/> 

但問題是:

在我的XML,我把setMaxLine = 3 so在方法運行中,它總是返回3行而不是4 - 5或更多。

我不知道它是否清楚。

+0

您是否嘗試過'textView.getLayout()getLineCount()'? – azizbekian

+0

maxLines用於限制textview到上述行的高度。 –

+0

@azizbekian是的我已經嘗試textView.getLayout()。getLineCount() –

回答

0

你可以嘗試設置addTextChangedListener上的TextView如下:

textview.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
       } 

       @Override 
       public void afterTextChanged(Editable s) { 
        // perform your process 
        Log.e("line count", String.valueOf(textview.getLineCount())); 
       } 
      }); 
0

試試這個:

textview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
       @Override 
       public void onGlobalLayout() { 
        textview.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
    textView.getLayout().getLineCount()    
    } 
      }); 
+0

我不能使用removeOnGlobalLayoutListener,因爲我在API 15上 –