我有一个 TextView,其高度会根据屏幕中的其他组件而变化。我要在此 TextView 中设置很长的文本,因此我想省略它。简单地指定 android:ellipsize="end" 是行不通的。只有同时指定 maxLines 时,椭圆化才起作用。但我无法指定 maxLines 的值,因为 TextView 的高度是动态的。如何在不指定 TextView 的 maxLines 的情况下使文本椭圆化?
我通过添加全局布局侦听器找到了问题的解决方案。
以下是代码片段
tvDesc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tvDesc.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int noOfLinesVisible = tvDesc.getHeight() / tvDesc.getLineHeight();
tvDesc.setText(R.string.desc);
tvDesc.setMaxLines(noOfLinesVisible);
tvDesc.setEllipsize(TextUtils.TruncateAt.END);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)