android:drawableleft 图标居中,Android自定义TextView实现drawableLeft内容居中

本文介绍了如何在Android中创建一个自定义TextView,使得drawableLeft的图标与文字能居中对齐。通过自定义一个drawablecentertextview类,并重写ondraw方法,调整canvas的绘制位置,实现了居中显示的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何实现使用textview的drawableleft使图片和文字居中显示呢???

代码如下:

1.首先自定义一个类,继承textview

package com.test.signcalendar.weight;

import android.content.context;

import android.graphics.canvas;

import android.graphics.drawable.drawable;

import android.util.attributeset;

import android.widget.textview;

/**

* 自定义textview,实现drawableleft可以和文字一起居中

* @author hlq

* @createtime 2016年3月20日04:14:36

*

*/

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);

}

}

2.之后在xml布局文件中直接引用即可。。。

android:id="@+id/textview1111"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:drawableleft="@drawable/fmhp_mine_health_plan_signcalendar_finish_status_bg"

android:drawablepadding="5dp"//给图片和文字之间设置填充

android:text="都完成"

android:textcolor="#333333"

android:textsize="12sp" />

3。ok实现效果 如下。。。

365cd9209880e3cbd354b8084c96a16f.png

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值