如何获得TextView的实际行数?

时间:2017-04-13 08:57:02

标签: android

我想知道如何获得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 所以在方法运行中,它总是返回3行而不是4 - 5或更多。

我不知道它是否清楚。

2 个答案:

答案 0 :(得分: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())); 
                }
            });

答案 1 :(得分:0)

试试这个:

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