1

我在 LinearLayout 中有一个简单的 TextView

<TextView
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:singleLine="false"
     android:maxLines="2"
     android:ellipsize="end" />

所以我想要一个最大的TextView。2行。TextViews 文本在 ListView 适配器中动态设置。在 Android 4 上一切看起来都很好,但在 Android 2 上,textview 的文本总是在第一行被省略。

问题是android:ellipsize="end"在第一行应用,即使有两行文本。

有解决此问题的方法吗?

4

2 回答 2

2

做这个

机器人:多线=“真”

它会为你工作。

于 2013-10-23T10:53:08.783 回答
0

您可以使用此方法来实现此目的

public void doEllipsize(final TextView tv, final int maxLine) {
        ViewTreeObserver vto = tv.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            @SuppressWarnings("deprecation")
            @Override
            public void onGlobalLayout() {

                ViewTreeObserver obs = tv.getViewTreeObserver();
                obs.removeGlobalOnLayoutListener(this);
                if (maxLine <= 0) {
                    int lineEndIndex = tv.getLayout().getLineEnd(0);
                    String text = tv.getText().subSequence(0, lineEndIndex - 3)
                            + "...";
                    tv.setText(text);
                } else if (tv.getLineCount() >= maxLine) {
                    int lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1);
                    String text = tv.getText().subSequence(0, lineEndIndex - 3)
                            + "...";
                    tv.setText(text);
                }
            }
        });
    }

如何使用

将此方法放入您的活动中并在 findViewById() 之后调用

TextView yourTv = (TextView)findViewById(R.id.yourtv);
        doEllipsize(yourTv,2);
于 2013-10-23T11:58:31.920 回答