今天遇到一个需求,在文本后面添加一张图片,
最简单的实现方式就是TextView后面再加一个ImageView,但是要限制文本显示一行,超出显示...,
然后发现了一个问题,text过长的时候会把图片挤出父布局,导致图片看不见了。。。
所以我用了 android:drawableEnd="@mipmap/pic",完美解决,这个方式会把图片当作TextView的一部分,也就不会超出父布局。
看起来没问题,然而这个图片是要指定大小的,我看了看,发现这个方式并不能再xml中指定drawable的大小,这就有不小的局限性的,然后我翻看有关于这部分的源码,发现是可以实现的,先看效果图
虽然有时候会图片拉伸,但是是在不按比例的情况下,你要是按照比例去缩小放大,还是很好用的,下边贴代码
Drawable drawable = getResources().getDrawable(R.mipmap.pic);
//使用原本的宽高
// drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.setBounds(0, 0, 28, 15);//指定宽高
tv_name.setCompoundDrawables(null, null, drawable, null);
重点在setBounds
官方翻译 :为 Drawable 指定一个边界矩形。 这是调用 draw() 方法时可绘制对象将绘制的位置。
Rect是一个存矩形坐标的 Rect 保存了矩形的四个整数坐标。
你传进来的数值会重新调用 draw() ,将他绘制,然后就做到了改变TextView的Drawable 图片大小。