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 では、テキストビューのテキストは常に最初の行で省略されます。

問題は、android:ellipsize="end"2 行のテキストがある場合でも、最初の行に適用されることです。

この問題の回避策はありますか?

4

2 に答える 2

2

これを行う

android:multiLine="true"

それはあなたのために働くでしょう。

于 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 に答える