android让控件居中,Android如何使用图文居中显示控件

本文介绍了在Android中如何使图文居中显示,包括TextView的设置和自定义DrawableCenterTextView控件的实现方法,详细解析了代码实现过程。
摘要由CSDN通过智能技术生成

Android如何使用图文居中显示控件

发布时间:2020-11-04 17:35:47

来源:亿速云

阅读:127

作者:Leah

Android如何使用图文居中显示控件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

最近项目中用到了文字图标的按钮,需要居中显示,如果用TextView实现的方式,必须同时设置padding和drawablePadding。如下:

android:layout_width="200dp"

android:layout_height="wrap_content"

android:drawableLeft="@drawable/ic_xxx"

android:drawablePadding="-60dp"

android:minHeight="48dp"

android:gravity="center"

android:padding="80dp" />

这种方式需要自己做精确计算。比较麻烦。另外还有一种方式就是用线性布局包裹ImageView和TextView,但这样会增加布局层级。于是自己封装了一个控件DrawableCenterTextView。

attrs.xml文件中定义属性:

对应的Java代码如下:

public class DrawableCenterTextView extends View {

static final int LEFT = 0;

static final int TOP = 1;

static final int RIGHT = 2;

static final int BOTTOM = 3;

private CharSequence mText;

private ColorStateList mTextColor;

private float mTextSize;

private int mTextStyle;

private int mDrawablePadding;

private Drawable[] mCompoundDrawables;

private Rect mTextBounds;

private Rect mDrawableLeftBounds;

private Rect mDrawableTopBounds;

private Rect mDrawableRightBounds;

private Rect mDrawableBottomBounds;

private TextPaint mTextPaint;

public DrawableCenterTextView(Context context) {

this(context, null);

}

public DrawableCenterTextView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public DrawableCenterTextView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

Drawable drawableLeft = null, drawableTop = null, drawableRight = null, drawableBottom = null;

TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.DrawableCenterTextView, defStyleAttr, 0);

mText = ta.getText(R.styleable.DrawableCenterTextView_android_text);

mTextColor = ta.getColorStateList(R.styleable.DrawableCenterTextView_android_textColor);

mTextSize = ta.getDimensionPixelSize(R.styleable.DrawableCenterTextView_android_textSize, 15);

mTextStyle = ta.getInt(R.styleable.DrawableCenterTextView_android_textStyle, 0);

drawableLeft = ta.getDrawable(R.styleable.DrawableCenterTextView_android_drawableLeft);

drawableTop = ta.getDrawable(R.styleable.DrawableCenterTextView_android_drawableTop);

drawableRight = ta.getDrawable(R.styleable.DrawableCenterTextView_android_drawableRight);

drawableBottom = ta.getDrawable(R.styleable.DrawableCenterTextView_android_drawableBo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值