【Android】UI(三)MaterialButton

MaterialButton

MaterialButton是Google于SDK28推出的新控件,當(dāng)遇到按鈕需要圓角、或者描邊等,就不必使用xml文件或者Github上找第三方庫(kù)實(shí)現(xiàn)。

效果預(yù)覽

依賴引入

  • 添加依賴

    com.google.android.material:material:1.3.0
    
  • app 的theme主題修改

    android:theme="@style/Theme.MaterialComponents.Light.NoActionBar"
    

繼承關(guān)系

java.lang.Object
 ?android.view.View
  ?android.widget.TextView
   ?android.widget.Button
    ?androidx.appcompat.widget.AppCompatButton
     ?com.google.android.material.button.MaterialButton

MaterialButton繼承AppCompatButton,所以它擁有AppCompatButton所有的特性,且在其基礎(chǔ)上做了一些擴(kuò)展,如圓角、描邊、前置和后置icon(支持設(shè)置Size、Tint、Padding、Gravity等),還支持按壓水波紋并且自定義顏色。

關(guān)鍵屬性

屬性 描述 參數(shù)
app:backgroundTint 背景著色 默認(rèn)為?attr/colorPrimary
app:backgroundTintMode 著色模式 add,multiply,screen,src_atop,src_in,src_over
app:strokeColor 描邊顏色
app:strokeWidth 描邊寬度
app:cornerRadius 圓角大小
app:rippleColor 按壓水波紋顏色
app:icon 圖標(biāo)icon
app:iconSize 圖標(biāo)大小
app:iconGravity 圖標(biāo)重心 start,end.textStart,textEnd
app:iconTint 圖標(biāo)著色
app:iconTintMode 圖標(biāo)著色模式 add,multiply,screen,src_atop,src_in,src_over
app:iconPadding 圖標(biāo)和文本之間的間距

注意事項(xiàng)

  • 不可以使用android:background設(shè)置按鈕背景,會(huì)破壞MaterialButton本身的繪制,而設(shè)置背景則推薦使用app:backgroundTint

  • MaterialButton創(chuàng)建后,按鈕實(shí)際長(zhǎng)度并不是設(shè)定值,因?yàn)樗舷掠辛艨?,可以使?/p>

    android:insetBottom="0dp"android:insetTop="0dp"去除

  • 去除陰影

    MD控件默認(rèn)有陰影效果,但是有時(shí)候我們并不想要按鈕有陰影,那么這時(shí)候可以指定style為style="@style/Widget.MaterialComponents.Button.UnelevatedButton" 這樣就能去掉陰影,讓視圖看起來(lái)扁平化

  • 閃退

    修改APP主題

    android:theme="@style/Theme.MaterialComponents.Light.NoActionBar"
    

MaterialButtonToggleGroup

效果預(yù)覽

  • 單選

  • 多選

繼承關(guān)系

java.lang.Object
   ?android.view.View
        ?android.view.ViewGroup
             ?android.widget.LinearLayout
                  ?com.google.android.material.button.MaterialButtonToggleGroup

類(lèi)似一個(gè)LinearLayout,但只能添加MaterialButton,只有第一個(gè)子元素的最左邊角和最后一個(gè)子元素的最右邊角才能保留它們的形狀外觀圓角大小,類(lèi)似于iOS中的SegmentedControl, 用戶可以從組中選擇一個(gè)或多個(gè)選項(xiàng)。

公開(kāi)屬性

屬性 描述 參數(shù)
app:checkedButton 默認(rèn)選中 按鈕ID
app:singleSelection 是否單項(xiàng)選擇 true/false
app:selectionRequired 設(shè)置為true后,強(qiáng)制至少選中一個(gè) true/false

tab切換監(jiān)聽(tīng)

MaterialButtonToggleGroup materialButtonToggleGroup = findViewById(R.id.toggleGroup);
materialButtonToggleGroup.addOnButtonCheckedListener(new MaterialButtonToggleGroup.OnButtonCheckedListener() {
    @Override
    public void onButtonChecked(MaterialButtonToggleGroup group, int checkedId, boolean isChecked) {
        Toast.makeText(MainActivity.this, "ID:" + checkedId + ", checked:" + isChecked, Toast.LENGTH_SHORT).show();
    }
});

參考:2021Android從零入門(mén)到實(shí)戰(zhàn)(Kotlin版)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容