前言
textview的drawableleft、drawableright和drawabletop是一個常用、好用的屬性,可以在文本的上下左右放置一個圖檔,而不使用更加複雜布局就能達到,我也常常喜歡用radiobutton的這幾個屬性實作很多效果,但是苦于不支援讓drawbleleft與文本一起居中,設定gravity為center也無濟于事,終于有空研究了一下,這裡與大家一起分享。
聲明
歡迎轉載,請注明出處!
部落格園:http://www.cnblogs.com/
農民伯伯: http://www.cnblogs.com/over140/
正文
一、效果圖

二、實作代碼
自定義控件
/**
* 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);
}
和普通textview用法一緻,無需額外增加屬性。
2013-12-13 注意,drawableright不管用!感謝網友提醒,後續有進展了再更新文章。
結束
那些讓你難受的技術問題一定要找時間想辦法擺平ta!
轉載:http://www.cnblogs.com/over140/p/3464348.html