前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于MaterialButton你需要知道的事

关于MaterialButton你需要知道的事

作者头像
longzeqiu
发布2022-01-11 10:07:53
8140
发布2022-01-11 10:07:53
举报
文章被收录于专栏:Android小知识Android小知识

MaterialButton

官网占楼,下面是个人使用的总结

MaterialButton官方文档

  • 首先肯定是导包
代码语言:javascript
复制
    implementation 'com.google.android.material:material:1.2.0-alpha06'
  • 包引入以后你就会发现可以在布局里写出MaterialButton控件了
代码语言:javascript
复制
<com.google.android.material.button.MaterialButton
        android:layout_width="@dimen/dp_60"
        android:layout_height="wrap_content"
        android:layout_gravity="right|top"
        android:layout_marginTop="@dimen/dp_16"
        android:layout_marginRight="@dimen/dp_16"
        android:gravity="center"
        android:text="@string/preview_ok"
        app:backgroundTint="@color/colorBlue"
        android:textColor="@color/colorWhite"
        app:cornerRadius="@dimen/dp_5"/>

圆角和着色以及宽高都没有奏效

我是应用主题前的MaterialButton

圆角和着色以及宽高都奏效

我是应用主题后的MaterialButton

  • 此时出现的几个坑
  • 你会发现你设置的宽高属性并没有应用到MaterialButton控件上,就连你为他backgroundTint着的颜色都不对,那么原因究竟为何呢?
  • 这是由于系统自身为MaterialButton控件设置了默认的属性,所以你的操作其实并不会生效
    • 那么我们就要覆写这些属性,让MaterialButton控件由我们管控
  • 在res→values→styles.xml中添加如下属性
代码语言:javascript
复制
    <style name="materialButton" parent="Widget.MaterialComponents.Button">
        <item name="android:paddingLeft">8dp</item>
        <item name="android:paddingRight">8dp</item>
        <item name="android:paddingTop">4dp</item>
        <item name="android:paddingBottom">4dp</item>
        <item name="android:inset">0dp</item>
        <item name="android:insetLeft">0dp</item>
        <item name="android:insetRight">0dp</item>
        <item name="android:insetBottom">0dp</item>
        <item name="android:insetTop">0dp</item>
        <item name="android:minWidth">0dp</item>
        <item name="android:minHeight">0dp</item>
        <item name="android:elevation">0dp</item>
    </style>
  • 这次看一下,竟然依旧没有奏效
  • 究竟为何呢。
  • 😄最后一步
    • 在res→values→styles.xml中AppThemeparent要改为Theme.MaterialComponents.Light.NoActionBar
  • 此时你的MaterialButton就完全臣服于你啦
    • 需要注意的事:
    • 如果没做最后一步会产生如下报错
代码语言:javascript
复制
 Caused by: android.view.InflateException: Binary XML file line #42: Binary XML file line #42: Error inflating class com.google.android.material.button.MaterialButton
     Caused by: android.view.InflateException: Binary XML file line #42: Error inflating class com.google.android.material.button.MaterialButton
  • 看网上有说使用implementation 'com.google.android.material:material:1.0.0-beta01'这个版本的依赖可以,But需要注意,如果你考虑使用TabLayout的话这个版本是没有TabLayoutMediator的。

哦哦 对啦,最后一点,主题为Theme.MaterialComponents.Light.NoActionBar时,你的checkbox等等控件,都需要你像MaterialButton一样处理,不然会像MaterialButton控件一样被系统默认着色成灰色

我是应用主题前的CheckBox,正常的白色

我是应用主题前的CheckBox

我是应用主题后的CheckBox,被系统着色成灰色

我是应用主题后的CheckBox

  • 到这里需要注意的点就都介绍完了,MaterialButton可以用起来了,不过要注意这些细节呦!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020.04.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 官网占楼,下面是个人使用的总结
    • 哦哦 对啦,最后一点,主题为Theme.MaterialComponents.Light.NoActionBar时,你的checkbox等等控件,都需要你像MaterialButton一样处理,不然会像MaterialButton控件一样被系统默认着色成灰色
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档