1、效果如下:
2、xml代码:
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:background="@drawable/shape_4d000000_15_bg"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:drawableStart="@drawable/play_small"
android:drawablePadding="3dp"
android:includeFontPadding="false"
android:text="00:00"
android:gravity="start|center_vertical"
android:textColor="#ffffff"
android:textSize="17sp"/>
3、虽然这个UI很简单,但是看到很多人用一个 LinearLayout 里面放 ImageVIew + TextView 去做,先不说过度渲染的问题,光是写这么多代码就有点嫌弃。看到这效果可能很多人首先想到的是TextView,但是在居中上面可能一下子没调试出来,就立马放弃转用布局来做。所以分享此方法,用一个TextVIew完成这个效果。虽然内容要居中,但是解决这问题的关键点是不要设置居中,反而是要把text的gravity设置为左对齐,这样text就会和drawableStart图标靠在一起了,再加上宽度设置为wrap_content,这样TextView的宽度就可以随着text文本的宽自适应。最后再加个左右两边相等的padding,看起来就像是drawable和text整体居中的效果了。举一反三,不管是drawable是在上下左右哪个方向,都可以通过设置text上下左右对齐来达到相应的效果。