TextView drawableLeft 及ellipsize 属性详解

  1. 在TextView的上下左右放置图片

android:drawableLeft
android:drawableTop
android:drawableRight
android:drawableBottom

日常业务场景 :完成一个既有图片,又有文字,还有背景的图标。需要< RelativeLayout > + < ImageView > + < TextView > 进行绘制。现在只需要一个< TextView >就可以搞定。

需求如图所示:
简单使用场景

drawable添加方式一:xml中直接使用

TextView drawableLeft 及ellipsize 属性详解_第1张图片TextView drawableLeft 及ellipsize 属性详解_第2张图片
问题点:查看drawable的属性时,没有设置图片大小的属性,当切图给的较小的时候,无法在TextView中调节大小。

drawable 添加方式二:使用代码的方式进行添加

解决方案:在代码中动态设置。如下图所示:
解决图片不能更改大小的问题

//可以无需设置setBounds()来设置drawable的大小了,直接设置原大小即可
Drawable delete_drawable = getResources().getDrawable(R.drawable.selector_detail_top)
mTvPlay.setCompoundDrawablesWithIntrinsicBounds(delete_drawable, null, null, null);

  1. android:ellipsize属性:省略部分文字。
    TextView drawableLeft 及ellipsize 属性详解_第3张图片
    marquee跑马灯的详细使用:TextView drawableLeft 及ellipsize 属性详解_第4张图片
    问题点:首先,文字何时会显示不全?
    答:当文字在指定的宽度范围内,没有显示完全。这里有两种情况:
    ①:当不限制文字的宽度,即layout_width=wrap_content/match_content时,文字超过用户显示的屏幕便会自动进行省略。
    ②:限制文字的宽度,即layout_width="xxdp"的时候,当文字显示超过此宽度的时候,则会进行省略。

业务场景:recyclerView条目中,设置的TextView的长度大于12个字符后,才进行缩略显示,并且条目的后面紧跟其他图标。这样的一个列表中,条目图标才会因为条目长度的不同,如样图一所示。
问题点:不能固定限制item中TextView的宽度,才能保证显示长短不一的话,就不能限制TextView 的宽度,不限制TextView的话,也不能让其超过屏幕进行自动缩略,那如何进行设置呢?
解决方案:在代码中动态设置。如下图所示:
在这里插入图片描述
注意:动态获取LayoutParams的时候,需要获取的时该TextView所在的父布局的属性,如果LinearLayout.LayoutParams…,则new LinearLayout ,如果时RealtiveLayout,则new RelativeLayout.LayoutParams…

样图一:

TextView drawableLeft 及ellipsize 属性详解_第5张图片

下划线设置的几种方式:

  • textView.setText(Html.fromHtml(""+“0123456”+""));
  • SpannableString content = new SpannableString(str);
    content.setSpan(new UnderLineSpan, 0, str.length(), 0);
  • tvTest.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
    tvTest.getPaint().setAntiAlias(true);//抗锯齿

你可能感兴趣的:(Android,Widget)