MaterialButton

作者: 硅谷干货 | 来源:发表于2022-01-16 23:06 被阅读0次

    MaterialButton是Google于SDK28推出的新控件,当遇到按钮需要圆角、或者描边等,就不必使用xml文件或者Github上找第三方库实现。

    效果预览

    button-1

    依赖引入

    • 添加依赖

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

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

    继承关系

    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所有的特性,且在其基础上做了一些扩展,如圆角、描边、前置和后置icon(支持设置Size、Tint、Padding、Gravity等),还支持按压水波纹并且自定义颜色。

    关键属性

    image.png

    注意事项

    • 不可以使用android:background设置按钮背景,会破坏MaterialButton本身的绘制,而设置背景则推荐使用app:backgroundTint

    • MaterialButton创建后,按钮实际长度并不是设定值,因为它上下有留空,可以使用

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

    • 去除阴影

      MD控件默认有阴影效果,但是有时候我们并不想要按钮有阴影,那么这时候可以指定style为 style="@style/Widget.MaterialComponents.Button.UnelevatedButton" 这样就能去掉阴影,让视图看起来扁平化

    • 闪退

      修改APP主题

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

    MaterialButtonToggleGroup

    效果预览

    • 单选

    image.png
    • 多选

    image.png

    继承关系

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

    类似一个LinearLayout,但只能添加MaterialButton,只有第一个子元素的最左边角和最后一个子元素的最右边角才能保留它们的形状外观圆角大小,类似于iOS中的SegmentedControl, 用户可以从组中选择一个或多个选项。

    公开属性

    image.png

    tab切换监听

    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();
        }
    });
    

    相关文章

      网友评论

        本文标题:MaterialButton

        本文链接:https://www.haomeiwen.com/subject/vxmqhrtx.html