开发者

How to set maxLines and ellipsize of a TextView at the same time

开发者 https://www.devze.com 2022-12-31 20:40 出处:网络
I want to limit my text view to have maximum of 5 lines, so I did: <TextView android:id=\"@+id/text\"

I want to limit my text view to have maximum of 5 lines, so I did:

<TextView
    android:id="@+id/text"
    android:layout_wid开发者_运维问答th="fill_parent"
    android:layout_height="wrap_content"  
    android:maxLines="5" />

But when I try to configure it to add '...' when the text is truncated, I add android:ellipsize="end". I do see the ... but then my TextView only has a max line of 2, instead of 5.

Can you please suggest how can I make the text view of maximum line of 5 and add '...' when it get truncated?

Thank you.


Progrmatically, you can use:

your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");  


try this code...

    final TextView tv_yourtext = (TextView)findViewById(R.id.text);

    tv_yourtext.setText("A really long text");
    ViewTreeObserver vto = tv_yourtext.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            ViewTreeObserver obs = tv_yourtext.getViewTreeObserver();
            obs.removeGlobalOnLayoutListener(this);
            if(tv_yourtext.getLineCount() > 6){
                Log.d("","Line["+tv_yourtext.getLineCount()+"]"+tv_yourtext.getText());
                int lineEndIndex = tv_yourtext.getLayout().getLineEnd(5);
                String text = tv_yourtext.getText().subSequence(0, lineEndIndex-3)+"...";
                tv_yourtext.setText(text);
                Log.d("","NewText:"+text);
            }

        }
    });


Apparently you have to specify the inputType and set it to none in this case. It should look something like this:

<TextView
  android:ellipsize="end"
  android:inputType="none"
  android:maxLines="2"


You only need to add this line to your TextView:

android:ellipsize="marquee"


There is same question android ellipsize multiline textview This is known bug, quite old and not fixed yet :(

someone posted workaround http://code.google.com/p/android-textview-multiline-ellipse/ maybe it will help you (or someone else)


<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"  
android:maxLines="5"
android:ellipsize="end" />

Works for me, make sure TextView top container should have height like

android:layout_height="wrap_content"


When I set the TextView height to a constant value (like 50dp), it works fine for me.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号