android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例
在我們開發中,TextView設置Android:drawableLeft一定使用的非常多,但Drawable和Text同時居中顯示可能不好控制,有沒有好的辦法解決呢?
小編的方案是通過自定義TextView實現。
實現的效果圖:
注:第一行為原生TextView添加android:drawableLeft
第二行為自定義TextView實現的效果。
實現思路:
繼承TextView,覆蓋onDraw(Canvas canvas),在onDraw中先將canvas進行translate平移,再調用父類onDraw進行繪制。
DrawableTextView.Java:
package com.xing.drawabletextview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Created by Administrator on 2017/2/28.
*/
public class DrawableTextView extends TextView {
public DrawableTextView(Context context) {
this(context, null);
}
public DrawableTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DrawableTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
// getCompoundDrawables() : Returns drawables for the left, top, right, and bottom borders.
Drawable[] drawables = getCompoundDrawables();
// 得到drawableLeft設置的drawable對象
Drawable leftDrawable = drawables[0];
if (leftDrawable != null) {
// 得到leftDrawable的寬度
int leftDrawableWidth = leftDrawable.getIntrinsicWidth();
// 得到drawable與text之間的間距
int drawablePadding = getCompoundDrawablePadding();
// 得到文本的寬度
int textWidth = (int) getPaint().measureText(getText().toString().trim());
int bodyWidth = leftDrawableWidth + drawablePadding + textWidth;
canvas.save();
canvas.translate((getWidth() - bodyWidth) / 2, 0);
}
super.onDraw(canvas);
}
}
布局文件中引入:
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_one"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="21" />
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_two"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="99" />
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_three"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:text="99+" />
以上所述是小編給大家介紹的Android DrawableTextView圖片文字居中顯示實例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
總結
以上是生活随笔為你收集整理的android动态设置文本居中显示图片,Android DrawableTextView图片文字居中显示实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么实现java和数据库的链接_JAVA
- 下一篇: html5控制gif速度,gif加速软件