Android 让自定义TextView的drawableLeft与文本一起居中
更新时间:2016年07月21日 15:15:37 投稿:lqh
本文主要介绍Android 自定义控件TextView显示居中问题,在开发过程中经常会遇到控件的重写,这里主要介绍TextView的drawableLeft与文本一起居中的问题
前言
TextView的drawableLeft、drawableRight和drawableTop是一个常用、好用的属性,可以在文本的上下左右放置一个图片,而不使用更加复杂布局就能达到,我也常常喜欢用RadioButton的这几个属性实现很多效果,但是苦于不支持让drawbleLeft与文本一起居中,设置gravity为center也无济于事,终于有空研究了一下,这里与大家一起分享。
正文
一、效果图
二、实现代码
自定义控件
/** * drawableLeft与文本一起居中显示 * * */ public class DrawableCenterTextView extends TextView { public DrawableCenterTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public DrawableCenterTextView(Context context, AttributeSet attrs) { super(context, attrs); } public DrawableCenterTextView(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { Drawable drawableLeft = drawables[0]; if (drawableLeft != null) { float textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; canvas.translate((getWidth() - bodyWidth) / 2, 0); } } super.onDraw(canvas); } }
总结:和普通TextView用法一致,无需额外增加属性,drawableRight不能用。
以上就是对自定义控件让TextView的drawableLeft与文本一起居中显示的问题解决,需要的朋友可以参考下。
相关文章
Android编程UI设计之GridView和ImageView的用法
这篇文章主要介绍了Android编程UI设计之GridView和ImageView的用法,结合实例形式较为详细的分析了Android中GridView和ImageView组件的相关方法使用技巧,需要的朋友可以参考下2016-01-01浅谈Android AsyncTask内存安全的一种使用方式
这篇文章主要介绍了浅谈Android AsyncTask内存安全的一种使用方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-08-08
最新评论