TextView:在省略号后添加文本或更改省略号字符

我想做什么

我正在尝试使用TextView

android:ellipsize="end" android:maxLines="3" 

而不是“……”最后有一个“……显示更多”。

我在哪里

如果TextView是单行,这很容易,因为我可以使用2个TextViews,但我需要它有多行,“Show More”需要内联。

我一直在寻找一种方法来改变最后添加但无法find任何内容的省略号字符。

我能想到的唯一解决方案是放弃自动省略号,测量文本并从代码中添加“…显示更多”。

这个问题

有没有办法用自定义的内容替换Android添加的内容(“…”)?

    试试这种方式

    创建这个function

     public void makeTextViewResizable(final TextView tv, final int maxLine, final String expandText) { if (tv.getTag() == null) { tv.setTag(tv.getText()); } 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 - expandText.length() + 1) + " " + expandText; tv.setText(text); } else if (tv.getLineCount() >= maxLine) { int lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1); String text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText; tv.setText(text); } } }); } 

    如何使用

    这将在第4行末尾写入“SeeMore”而不是“……”

     makeTextViewResizable(tv, 4, "SeeMore"); 

    现在不需要在xml中写这些行

     android:ellipsize="end" android:maxLines="3"