Android 在单词末尾省略TextView
我正在使用Android 在单词末尾省略TextView,android,android-layout,textview,Android,Android Layout,Textview,我正在使用TextView的android:ellipsize属性,以及android:maxLines使文本适合最多3行 问题是有时文本在单词的中间被切掉。我只想在单词的末尾省略这段文字。例如: 安卓太棒了 现在看起来是这样的: 安卓令人敬畏 但我希望它看起来像这样: 安卓是 此外,用户可以在此TextView中动态更改textSize,因此很难预测最后一个单词 有没有办法只在单词的末尾省略?如果系统不允许这样做,是否有任何库可以提供这样的功能,或者唯一的可能是编写我自己的类来实现这一功能?您
TextView
的android:ellipsize
属性,以及android:maxLines
使文本适合最多3行
问题是有时文本在单词的中间被切掉。我只想在单词的末尾省略这段文字。例如:
安卓太棒了
现在看起来是这样的:
安卓令人敬畏
但我希望它看起来像这样:
安卓是
此外,用户可以在此TextView
中动态更改textSize
,因此很难预测最后一个单词
有没有办法只在单词的末尾省略?如果系统不允许这样做,是否有任何库可以提供这样的功能,或者唯一的可能是编写我自己的类来实现这一功能?您必须为textview指定省略号为“end”。然后在设置文本后,将globallayout listener添加到textview,并按如下方式更改其文本:
TextView articleTitle = (TextView) v.findViewById(R.id.articleTitle);
articleTitle.setText("This is a big big text");
doEllipse(articleTitle);
public void doEllipse(final TextView tv) {
tv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tv.getViewTreeObserver().removeOnGlobalLayoutListener(this);
String text = tv.getLayout().getText().toString();
int text1Index = text.indexOf("…");
if (text1Index > 0) {
text = text.substring(0, text.lastIndexOf(" ")) + "...";
tv.setText(text);
}
}
});
}
1.获取你的文本大小;2.获取您的文本视图大小;3.运用数学;4.对您的应用程序进行适当的更改text@MocialovBoris你还没有回答我的问题。我对如何使我自己的类实现所需的功能有一个想法,但我想问一些我可以用来节省时间的现有解决方案。这不是试图回答您的问题,而是描述解决您问题的一种方法的注释。