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 );
}
});
}
如果對你有用,請點個贊,嘻嘻