And*_*onu 6 android ellipsis textview
我想做什么
我正在尝试使用TextView
android:ellipsize="end"
android:maxLines="3"
Run Code Online (Sandbox Code Playgroud)
而不是"......"最后有一个"......显示更多".
我在哪里
如果TextView是单行,这将很容易,因为我可以使用2个TextViews,但我需要它有多行,"Show More"需要内联.
我一直在寻找一种方法来改变最后添加但无法找到任何内容的省略号字符.
我能想到的唯一解决方案是放弃自动省略号,测量文本并从代码中添加"...显示更多".
这个问题
有没有办法用自定义的内容替换Android添加的内容("...")?
试试这种方式
创建这个功能
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);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
如何使用
这将在第4行末尾写"SeeMore"而不是"......"
makeTextViewResizable(tv, 4, "SeeMore");
Run Code Online (Sandbox Code Playgroud)
现在不需要在xml中编写这些行
android:ellipsize="end"
android:maxLines="3"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4583 次 |
| 最近记录: |