2017-04-13 11 views
0

私はTextViewの行数をどのように得ることができるか知っています。 私が意味する、私は彼らがこの次のコードを持って知っている:あなたは私のxmlを見つけることができます。ここTextViewの実際の行数を取得する方法は?

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

<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 だから、メソッドの実行の中で、そのメソッドは常に4〜5の代わりに3行を返します。

明らかかどうかわかりません。

+0

あなたは '' textView.getLayout()getLineCount()を試したことがありますか? – azizbekian

+0

maxLinesは、textviewの高さを上記の行に制限するために使用されます。 –

+0

@azizbekianはい私はすでにtextView.getLayout()。getLineCount()を試しています –

答えて

0

あなたは次のようにのTextViewにaddTextChangedListenerを設定しようとすることができます

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

私はAPI 15のためremoveOnGlobalLayoutListenerを使用できません –

関連する問題