【Android】使用MaterialButton

本文介绍了如何在Android应用中使用MaterialButton,包括添加依赖、修改Theme、探讨其继承关系,以及设置常用属性和使用MaterialButtonToggleGroup实现选项切换监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 添加依赖包

在app下的build.gradle里添加Google Material Button的依赖包
implementation ‘com.google.android.material:material:1.7.0’
Module的grdle文件
添加后要sync gradle。

2. 修改Theme

在res文件夹下的theme.xml里,把App的主题的父主题改为“Theme.MaterialComponents.Light.NoActionBar”
在这里插入图片描述

3. MaterialButton的继承关系

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

4. 常用属性

属性说明
app:backgroundTint背景颜色
app:backgroundTintMode颜色模式
app:strokeColor描边颜色
app:strokeWidth描边宽度
app:cornerRadius圆角大小
app:icon在按钮中设置图标
app:iconSize图标大小
app:iconGravity图标显示重心(位置)
app:iconTint图标颜色
app:iconPadding图标和文本之间的间距
style=“@style/Widget.MaterialComponents.Button.UnelevatedButton”去掉按钮的阴影效果

5. 实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.google.android.material.button.MaterialButton
        android:layout_width="150dp"
        android:layout_height="50dp"
        app:cornerRadius="30dp"
        android:text="Button_1"/>

    <com.google.android.material.button.MaterialButton
        android:layout_width="150dp"
        android:layout_height="50dp"
        app:cornerRadius="30dp"
        app:strokeColor="@color/material_dynamic_secondary10"
        app:strokeWidth="3dp"
        android:text="Button_2"
        />

    <com.google.android.material.button.MaterialButton
        android:layout_width="150dp"
        android:layout_height="50dp"
        app:cornerRadius="30dp"
        app:strokeColor="@color/material_dynamic_secondary10"
        app:strokeWidth="3dp"
        app:icon="@android:drawable/ic_lock_lock"
        app:iconPadding="0dp"
        android:text="Button_3"
        />
</LinearLayout>

在这里插入图片描述

6. Option Tabs (MaterialButtonToggleGroup)

多选项的组件继承 android.widget.LinearLayout, 本身也类似于一个LinearLayout, 但只能添加MaterialButton组件。

属性说明
app:checkedButton默认选中
app:singleSelection是否单项选择
app:selectionRequired设置为true后,强制至少选中一个

7.实例

    <com.google.android.material.button.MaterialButtonToggleGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="100dp"
        android:id="@+id/toggle_group"
        app:checkedButton="@+id/tab1"
        app:singleSelection="true">
        <!-- 默认选中第一个tab, 且同时只能选中一个-->
        
        <com.google.android.material.button.MaterialButton
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:backgroundTint="@color/material_dynamic_neutral70"
            android:text="Option_1"
            android:id="@+id/tab1"/>

        <com.google.android.material.button.MaterialButton
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:backgroundTint="@color/material_dynamic_neutral50"
            android:text="Option_2"/>
        <com.google.android.material.button.MaterialButton
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:backgroundTint="@color/material_dynamic_neutral20"
            android:text="Option_3"/>

    </com.google.android.material.button.MaterialButtonToggleGroup>

输出结果

选中不同Tab时,切换监听

        // 创建 MaterialButtonToggleGroup!对象
        val toggleGroup = findViewById<MaterialButtonToggleGroup>(R.id.toggle_group)
        //对点击不同Tab进行监听
        toggleGroup.addOnButtonCheckedListener(object: MaterialButtonToggleGroup.OnButtonCheckedListener{
            override fun onButtonChecked(
                group: MaterialButtonToggleGroup?,
                checkedId: Int,
                isChecked: Boolean
            ) {
                Log.d("MainActivity", isChecked.toString())
            }
        })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值