1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【Android】自定义控件让TextView的drawableLeft与文本一起居中显示

【Android】自定义控件让TextView的drawableLeft与文本一起居中显示

时间:2021-05-10 13:31:49

相关推荐

【Android】自定义控件让TextView的drawableLeft与文本一起居中显示

前言

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!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。