前言
TextView的drawableLeft、drawableRight和drawableTop是一个常用、好用的属性,可以在文本的上下左右放置一个图片,而不使用更加复杂布局就能达到,我也常常喜欢用RadioButton的这几个属性实现很多效果,但是苦于不支持让drawbleLeft与文本一起居中,设置gravity为center也无济于事,终于有空研究了一下,这里与大家一起分享。
声明
欢迎转载,请注明出处!
博客园:/
农民伯伯:/over140/
正文
一、效果图
二、实现代码
自定义控件
/**
*drawableLeft与文本一起居中显示
*
*@author农民伯伯
*@see/over140/p/3464348.html
*
*/
publicclassDrawableCenterTextViewextendsTextView{
publicDrawableCenterTextView(Contextcontext,AttributeSetattrs,
intdefStyle){
super(context,attrs,defStyle);
}
publicDrawableCenterTextView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicDrawableCenterTextView(Contextcontext){
super(context);
}
@Override
protectedvoidonDraw(Canvascanvas){
Drawable[]drawables=getCompoundDrawables();
if(drawables!=null){
DrawabledrawableLeft=drawables[0];
if(drawableLeft!=null){
floattextWidth=getPaint().measureText(getText().toString());
intdrawablePadding=getCompoundDrawablePadding();
intdrawableWidth=0;
drawableWidth=drawableLeft.getIntrinsicWidth();
floatbodyWidth=textWidth+drawableWidth+drawablePadding;
canvas.translate((getWidth()-bodyWidth)/2,0);
}
}
super.onDraw(canvas);
}
}
和普通TextView用法一致,无需额外增加属性。
-12-13 注意,drawableRight不管用!感谢网友提醒,后续有进展了再更新文章。
结束
那些让你难受的技术问题一定要找时间想办法摆平TA!