drawableLeft与文本一起居中显示

来源:互联网 发布:数据提取软件 编辑:程序博客网 时间:2024/05/16 10:21
/** * drawableLeft与文本一起居中显示 *  * @author 农民伯伯 * @see http://www.cnblogs.com/over140/p/3464348.html *  */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);    }}
drawableRigh 居中代码实现public class DrawableCenterButton extends Button {public DrawableCenterButton(Context context) {super(context);// TODO Auto-generated constructor stub}public DrawableCenterButton(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}public DrawableCenterButton(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {Drawable[] drawables = getCompoundDrawables();if (drawables != null) {Drawable drawableLeft = drawables[2];if (drawableLeft != null) {float textWidth = getPaint().measureText(getText().toString());int drawablePadding = getCompoundDrawablePadding();int drawableWidth = 0;drawableWidth = drawableLeft.getIntrinsicWidth();float bodyWidth = textWidth + drawableWidth + drawablePadding;setPadding(0, 0, (int)(getWidth() - bodyWidth), 0);canvas.translate((getWidth() - bodyWidth) / 2, 0);}}super.onDraw(canvas);}}
阅读全文
0 0