Setting Ellipsize on TextView reduces lines shown by one (instead of only ellipsizing last)

前端 未结 6 601
慢半拍i
慢半拍i 2020-12-12 16:29

when I am using TextView with singleLine="true" and ellipsize="end"(my top TextView), it works well

<
6条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-12 17:07

    This is by far the simplest solution I've found and am currently using in deployment. Let me know if you need any other assistance!

    Oh and remember to remove the android:ellipsize tag in your XML since you will be using the bottom code to automatically ellipsize at the end of 3 lines.

    TextView snippet;
    snippet.setText("loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor ")
    ViewTreeObserver vto = this.snippet.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    
        @Override
        public void onGlobalLayout() {
            ViewTreeObserver obs = snippet.getViewTreeObserver();
            obs.removeGlobalOnLayoutListener(this);
            if (snippet.getLineCount() > 3) {
                int lineEndIndex = snippet.getLayout().getLineEnd(2);
                String text = snippet.getText().subSequence(0, lineEndIndex - 3) + "...";
                snippet.setText(text);
            }
        }
    });
    

提交回复
热议问题