Android 使按钮中的icon图标和文字内容动态居中

2020/04/27 在看谷歌开发者文档时发现的新方法

只需设置iconGravity属性即可
在这里插入图片描述

下面是用代码计算高度和宽度来实现的方式

最近对Android 的Material风格比较感兴趣,MaterialButton很好用,不过插入icon时,icon本身会自动位于最右边,比如下面的注册按钮(随便放的一个icon):
在这里插入图片描述
查了一下,官方没有提供居中的方法,干脆自己写了两个方法:
一个是当按钮里只有图标时,将图标居中
另一个是当按钮里图标和文字存在时将他们居中。

思路很简单
1、先获取按钮的宽度,之后让按钮中的内容左填充到按钮宽度的一半
2、再获取按钮中内容的宽度,让按钮中的内容左填充到按钮宽度的一半之后又减去内容自身宽度的一 (就是内容先左填充按钮宽度一半的距离,再左填充负的内容自身一半的距离)

代码如下:
1.MaterialButton按钮中的icon图标和内容动态居中

   //复制这个方法就行
    public void getIconAndContentCenter(final MaterialButton btn){
        btn.post(new Runnable() {
            @Override
            public void run() {
                int btnwidth = btn.getWidth();
                btn.measure(0, 0);
                int contentwidth = btn.getMeasuredWidth();
                //可在下面的括号里适当加减整数来达到你想要的位置
                int paddingleft = ( btnwidth - contentwidth ) / 2; 
                btn.setPadding(paddingleft, 0, 0, 0);
            }
        });
    }

   //下面是调用例子
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       MaterialButton b = findViewById(R.id.btn_register);
       getIconAndContentCenter(b);
    }

结果:
在这里插入图片描述
2.MaterialButton按钮只有icon图标时的动态居中方法

    public void getIconcenter(final MaterialButton btn){
        btn.post(new Runnable() {
            @Override
            public void run() {
                int btnwidth = btn.getWidth();
                btn.measure(0, 0);
                int iconwidth = btn.getIcon().getIntrinsicWidth();
                int paddingleft = ( btnwidth - iconwidth  ) / 2;
                btn.setPadding( paddingleft , 0, 0, 0 );
            }
        });
    }

如果对你有用,请点个赞,嘻嘻

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值