Android 讓自定義TextView的drawableLeft與文本一起居中
前言
TextView的drawableLeft、drawableRight和drawableTop是一個(gè)常用、好用的屬性,可以在文本的上下左右放置一個(gè)圖片,而不使用更加復(fù)雜布局就能達(dá)到,我也常常喜歡用RadioButton的這幾個(gè)屬性實(shí)現(xiàn)很多效果,但是苦于不支持讓drawbleLeft與文本一起居中,設(shè)置gravity為center也無(wú)濟(jì)于事,終于有空研究了一下,這里與大家一起分享。
正文
一、效果圖

二、實(shí)現(xiàn)代碼
自定義控件
/**
* 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);
}
}
總結(jié):和普通TextView用法一致,無(wú)需額外增加屬性,drawableRight不能用。
以上就是對(duì)自定義控件讓TextView的drawableLeft與文本一起居中顯示的問(wèn)題解決,需要的朋友可以參考下。
相關(guān)文章
Android自定義一個(gè)屬于自己的時(shí)間鐘表操作方法
本文主要講解的是如何自定義一個(gè)時(shí)間鐘表,通過(guò)簡(jiǎn)單的練習(xí)可以簡(jiǎn)單學(xué)習(xí)android當(dāng)中自定義view的一些常用繪圖技巧,優(yōu)化android繪圖操作,感興趣的朋友跟隨小編一起看看吧2024-08-08
Android開(kāi)發(fā)中的簡(jiǎn)單設(shè)置技巧集錦
這篇文章主要介紹了Android開(kāi)發(fā)中的簡(jiǎn)單設(shè)置技巧,較為詳細(xì)的匯總了Android針對(duì)壁紙、語(yǔ)言、音量、錄音等多種設(shè)置的方法,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-06-06
Android Studio的安裝及第一次啟動(dòng)時(shí)的配置問(wèn)題
這篇文章主要介紹了Android Studio的安裝及第一次啟動(dòng)時(shí)的配置,需要的朋友可以參考下2019-09-09
Flutter實(shí)現(xiàn)漸變色加描邊字體效果
這篇文章介紹了Flutter實(shí)現(xiàn)漸變色描邊字體效果的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
Android仿微信界面的導(dǎo)航以及右上角菜單欄效果
這篇文章主要介紹了Android仿微信界面的導(dǎo)航以及右上角菜單欄效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Flutter質(zhì)感設(shè)計(jì)之彈出菜單
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之彈出菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
android不同activity之間共享數(shù)據(jù)解決方法
最近做局域網(wǎng)socket連接問(wèn)題,要在多個(gè)activity之間公用一個(gè)socket連接,就在網(wǎng)上搜了下資料,感覺(jué)還是application方法好用,帖出來(lái)需要的朋友可以參考下2012-11-11

