在TextView中省略文本而不指定maxLines

问题描述 投票:1回答:1

我有一个TextView,它的高度会根据屏幕中的其他组件而变化。我有一个很长的文本要在这个TextView中设置,因此我想椭圆化它。简单地指定android:ellipsize =“end”是行不通的。只有在指定maxLines的同时,椭圆化工作才有效。但我无法为maxLines指定值,因为TextView的高度是动态的。如何在不指定TextView的maxLines的情况下获取椭圆化文本?

android textview
1个回答
5
投票

我通过添加全局布局侦听器找到了问题的解决方案。以下是代码段

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);

        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.