Android Material Design之MaterialButton(一)

news2024/11/18 9:46:54
  1. 按规矩先上效果图
    在这里插入图片描述
  2. 资源引入
implementation 'com.google.android.material:material:1.4.0'
  1. 关键属性
属性描述
app:backgroundTint背景着色
app:backgroundTintMode着色模式
app:strokeColor描边颜色
app:strokeWidth描边宽度
app:cornerRadius圆角大小
app:rippleColor按压水波纹颜色
app:icon图标icon
app:iconSize图标大小
app:iconGravity图标摆放位置
app:iconTint图标着色
app:iconTintMode图标着色模式
app:iconPadding图标和文本之间的间距
  • 注意事项

  • 设置按钮背景 使用app:backgroundTint

  • 细心的老哥肯定发现Button 普通按钮MaterialButton 效果一样,这是因为在AndroidManifest.xmlapplication标签设置了theme属性

<application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MaterialDesignerDemo"
        tools:targetApi="31">


<style name="Theme.MaterialDesignerDemo" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>

  1. 为什么使用MaterialButton ?
    因为它可以帮助我们减少drawable文件

  2. 上布局文件源代码

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <androidx.appcompat.widget.AppCompatButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="AppCompatButton 普通按钮" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Button 普通按钮" />

    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="MaterialButton 扁平按钮" />

    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="MaterialButton 前置icon"
        app:icon="@drawable/ic_launcher_foreground"
        app:iconSize="20dp" />

    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="MaterialButton 前置icon"
        app:icon="@drawable/ic_launcher_foreground"
        app:iconGravity="textEnd"
        app:iconSize="20dp" />

    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="MaterialButton 描边扁平按钮"
        app:strokeColor="@color/black"
        app:strokeWidth="5dp"/>
</LinearLayout>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java八股文总结】之计算机网络

文章目录计算机网络一、基础1、网络体系结构2、HTTP协议、TCP协议、UDP协议比较3、网络协议4、WebSocket和Socket的区别&#xff1f;5、常见的端口及其对应的服务&#xff1f;6、从浏览器输入URL到页面展示发生了什么&#xff1f;&#xff08;★★★★★&#xff09;1、DNS域名…

MySQL纯代码复习(下)

前言 本文章的语言描述会比上篇多一些 数据库的创建修改与删除 标识符命名规则 数据库名、表名不得超过30个字符&#xff0c;变量限制为29个必须只能包含A-Z&#xff0c;a-z&#xff0c;0-9&#xff0c;_等63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个My…

Twitter引流如何开发客户

要想在twitter平台上取得效果&#xff0c;你需要先了解twitter的算法规则&#xff0c;去迎合平台&#xff0c;推特群推王给出以下5条建议&#xff0c;让你发布的帖子更容易被推荐。 这里Twitter群推王可以给大家讲一下&#xff0c;关于推特平台的算法排名&#xff1a; Twitter…

nginx降权+安装php

nginx降权 使用普通用户启动Nginx 为什么要让nginx服务使用普通用户 默认情况下&#xff0c;nginx的master进程使用的是root用户&#xff0c;worker进程使用的是nginx指定的普通用户&#xff0c;使用root用户跑nginx的master进程有两个大问题&#xff1a; &#xff08;1&#x…

课程设计-天天象棋作弊软件判别

目录 1.作弊开挂可能迹象 2.设计作弊检测系统灵感 3.设计作弊检测系统思路 3.1反作弊系统应对策略框架 4.感想体悟 1.作弊开挂可能迹象 1.非实名认证&#xff1b; 2.头像&#xff1a;美女&#xff1b; 3.名称&#xff1a; (1)一串英文字母&#xff1b; (2)非正常中文名…

【深度分解网络:显著性分析:IVIF】

Infrared and Visible Image Fusion Based on Deep Decomposition Network and Saliency Analysis &#xff08;基于深度分解网络和显著性分析的红外与可见光图像融合&#xff09; 传统的图像融合侧重于选择一种有效的分解方法从源图像中提取代表性特征&#xff0c;并试图找到…

2022年海运行业研究报告

第一章 行业概况 海洋运输又称“国际海洋运输”&#xff0c;提供海上客运或者货运服务的行业。是国际物流中最主要的运输方式。它是指使用船舶通过海上航道在不同国家和地区的港口之间运送货物的一种方式&#xff0c;在国际货物运输中使用最广泛。国际贸易总运量中的2/3以上&a…

功率放大器和电压放大器的区别是什么意思

很多人经常会在后台咨询小编功率放大器和电压放大器的区别有哪些&#xff1f;今天就来为大家科普一下功率放大器和电压放大器的知识内容&#xff0c;希望大家下次能够区分&#xff0c;并且可以正常地选择和使用功率放大器。 图&#xff1a;功率放大电路与电压放大电路对比 功率…

Opengl ES之YUV数据渲染

YUV回顾 记得在音视频基础知识介绍中&#xff0c;笔者专门介绍过YUV的相关知识&#xff0c;可以参考&#xff1a; 《音视频基础知识-YUV图像》 YUV数据量相比RGB较小&#xff0c;因此YUV适用于传输&#xff0c;但是YUV图不能直接用于显示&#xff0c;需要转换为RGB格式才能显…

简单的股票行情演示(一) - 实时标的数据

一、概述二、效果展示三、实现代码 1、行情数据中心2、数据拉取模块3、基础服务模块4、UI展示四、相关文章原文链接&#xff1a;简单的股票行情演示&#xff08;一&#xff09; - 实时标的数据 一、概述 很长一段时间都有一个想法&#xff0c;使用QCP去做一个行情展示小事例&…

TiDB Cloud

TiDB Cloud 为什么选择TiDB 分布式数据库-多租户混合工作负载-在同一个数据库中 事务型&#xff1a;基于行的数据分析型&#xff1a;基于列的数据 弹性比例&#xff1a; 缩小-减少节点横向扩展-添加节点 基于“RAFT”的高可用性 每个数据段的3个可用区进行复制 多租户 什么…

DataGridXL 2.0 for JavaScript Crack

你的web开发好了&#xff0c;客户说我习惯用excel这样的表格&#xff0c;你们是否能开发像电子表格一样的功能&#xff1f; Web 应用程序的类似 Excel 的体验---DataGridXL 2.0 for JavaScript Crack 你已经构建了一个 Web 应用程序&#xff0c;但你的用户坚持使用 Excel。 类似…

一、ROS2简介

ros2相关简介 ROS2的前身是ROS&#xff0c;ROS即机器人操作系统&#xff08;Robot Operating System&#xff09;。但是ROS本身并不是一个操作系统&#xff0c;而是一个软件库和工具集。 Ros的出现解决了机器人各个组件的通信问题&#xff0c;后来越来越多的机器人算法也集成到…

漫谈信息模型(1)

简单地表达复杂的世界&#xff0c;这是各类思想家近千年来的追求。如何将人类在世界上观察到的结果进行概念化表达&#xff1f;又如何描述人造的复杂工具&#xff1f;这种探索成为人类文明进步的一个重要的驱动力。计算机的出现&#xff0c;推动了人类对现实事物进行概念化的描…

技术开发87

技术开发87 业务内容&#xff1a; . 冲床加工&#xff0c;高速冲床加工&#xff0c;省力化机械制作 . 铣床加工&#xff0c;食品机械制作 . 轮廓加工&#xff0c;钢丝加工 . 冲床模具制作 . 溶接 公司简介&#xff1a; 资本金&#xff1a;1000万日元&#xff08;约66元人…

文件数据丢失怎么办?推荐几款好用的文件恢复大师

众所周知&#xff0c;计算机在使用过程中难免会出现文件数据丢失的情况&#xff0c;这是一种非常正常的现象。但是遇到这种情况&#xff0c;很多时候我们不知道该如何去补救。特别是由于一些原因导致电脑被重启&#xff0c;这样不仅会对电脑造成一定影响&#xff0c;更重要的是…

2022年8月15日陌陌推荐算法工程师面试题5道|含解

8本电子书免费送给大家&#xff0c;见文末。 1、DeBERTa与BERT的区别 DeBERTa提出了两种改进BERT预训练的方法&#xff1a;第一种方法是分散注意机制&#xff0c;该机制使用两个向量分别对每个单词的内容和位置进行编码来表示每个单词&#xff0c;并使用分散矩阵计算单词之间…

本地传奇架设详细教程

十二堂今天给大家分享一篇技术文章&#xff0c;传奇架设教程。 教程讲的很详细&#xff0c;就是一个菜鸟都能学会如何架设传奇。 在管理工具&#xff0d;>服务中停止ssdpdiscoveryservic服务 一、准备软件DBCommander 2000 Pro和传奇服务端&#xff08;什么版本都行&#x…

设计模式之代理模式(十一)

目录 1. 静态代理 2. 动态代理 3. Cglib代理 代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。好处就是可以用来增强。 被代理的对象可以是 远程对象&#xff0c;创建开销大的对象 或者 需要安全控制的对象。 可以分为三类 静态代理动态代…

Robot Framework 自动化测试详解

一、Robot Framework 简介 1、界面自动化测试工具 界面自动化测试,即UI自动化测试,比较常见的工具有:QTP、AutoIt、Selenium等。 像QTP经历了很多版本,最新的版本好像叫UFT了。对初学者来说,录制回放是相当容易上手的,除了录制,QTP主要用VBScript脚本编写代码,同时有…