标签:
TextView的drawableLeft、drawableRight和drawableTop是一个常用、好用的属性,可以在文本的上下左右放置一个图片,而不使用更加复杂布局就能达到,我也常常喜欢用RadioButton的这几个属性实现很多效果,但是苦于不支持让drawbleLeft与文本一起居中,设置gravity为center也无济于事,终于有空研究了一下,这里与大家一起分享。
声明
欢迎转载,请注明出处!
博客园:http://www.cnblogs.com/
农民伯伯: http://www.cnblogs.com/over140/
1 /** 2 * drawableLeft与文本一起居中显示 3 */ 4 public class DrawableCenterTextView extends TextView { 5 6 public DrawableCenterTextView(Context context, AttributeSet attrs, 7 int defStyle) { 8 super(context, attrs, defStyle); 9 } 10 11 public DrawableCenterTextView(Context context, AttributeSet attrs) { 12 super(context, attrs); 13 } 14 15 public DrawableCenterTextView(Context context) { 16 super(context); 17 } 18 19 @Override 20 protected void onDraw(Canvas canvas) { 21 Drawable[] drawables = getCompoundDrawables(); 22 if (drawables != null) { 23 Drawable drawableLeft = drawables[0]; 24 if (drawableLeft != null) { 25 float textWidth = getPaint().measureText(getText().toString()); 26 int drawablePadding = getCompoundDrawablePadding(); 27 int drawableWidth = 0; 28 drawableWidth = drawableLeft.getIntrinsicWidth(); 29 float bodyWidth = textWidth + drawableWidth + drawablePadding; 30 canvas.translate((getWidth() - bodyWidth) / 2, 0); 31 } 32 } 33 super.onDraw(canvas); 34 } 35 }
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:drawableLeft="@drawable/pay_weixin"
android:drawablePadding="10dp"
android:textColor="@color/code08"
android:textSize="16sp"
android:text="微信支付" />
让TextView的drawableLeft与文本一起居中显示
标签:
原文地址:http://www.cnblogs.com/androidsj/p/5036022.html