欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android的materialDesign风格的主题样式

程序员文章站 2022-05-30 23:06:48
...

使用materialDesign风格需要注意:

1,设置应用的targetVersion和minSdkVersion最低为21
2,在values目录下的style资源文件中,创建一个style,让其继承自android.Theme.Material
3,在AndroidManefest中指定应用的主题或者Activity的主题为我们设定的样式

Google官方提供了3中配色风格:
1,黑色主题,Theme.MaterialDesign
2,亮色主题,Theme.MaterialDesign.Light
3,明亮主题黑色,Theme.MaterialDesign.Light.DarkActionBar

也可以继承系统提供的MaterialDesign样式,进行配色,
Android的materialDesign风格的主题样式

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <!--电池条,状态栏颜色,会被statusBarColor效果覆盖-->
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!--<item name="android:colorPrimaryDark">@color/red</item>-->

        <!--电池条,状态栏颜色,继承自colorPrimaryDark-->
        <item name="android:statusBarColor">@color/colorPrimaryDark</item>

        <!--标题栏颜色-->
        <item name="colorPrimary">@color/colorPrimary</item>
        <!--底部栏,底部手机默认菜单栏颜色-->
        <item name="android:navigationBarColor">@color/navigationColor</item>

        <!--控件默认颜色,效果会被colorControlActivated取代-->
        <item name="colorAccent">@color/colorAccent</item>
        <!--文字颜色 -->
        <item name="android:textColor">@color/blue</item>

        <!--背景色-->
        <item name="windowBackground">@color/backGroundColor</item>

        <!--应用前景色,listview的分割线,switch滑动区默认使用该颜色-->
        <item name="colorForeground">@color/blue</item>
        <!--应用背景色,popMenu的背景默认使用该颜色-->
        <item name="colorBackground">@color/green</item>
        <!--控件的默认色调-->
        <item name="android:colorControlNormal">@color/red</item>
        <!--控件按压的色调-->
        <item name="android:colorControlHighlight">@color/red</item>
        <!--控件选中时的颜色,默认使用colorAccent-->
        <item name="android:colorControlActivated">@color/red</item>
        <!--默认按钮的背景色-->
        <item name="android:colorButtonNormal">@color/red</item>
        <!--radiobutton,CheckBox等控件的文字-->
        <item name="textColorPrimaryDisableOnly">@color/red</item>
        <!--应用的主要文字颜色,actionbar的标题文字默认使用该颜色-->
        <item name="android:textColorPrimary">@color/red</item>

        <!--主题不仅可以对application和activity使用,也可以对某一个控件单使用,
        或者在xml布局中给一个根节点控件设置android:theme属性,来修改它和它所有子控件的主体。
        如果我们要对特定控件做自定义修改,更建议通过控件自身的API进行设置修改-->

    </style>

</resources>

值得注意的是:在设置这些item属性的时候,会发现这样的情况,

<item name="colorPrimaryDark">@color/blue</item>
<item name="android:colorPrimaryDark">@color/red</item>

可以发现,都是设置这个属性,都是系统提示的给出的属性名,但是一个是android冒号靠头的,我测试发现,android冒号开头的设置会覆盖没有android冒号的属性设置。也就是说,对于上面的设置电池条颜色的代码,电池条会是红色,而不是蓝色。但是注释掉下面打一句android冒号开头的代码,上面的代码就会有效果了,电池条就是蓝色了。
Android的materialDesign风格的主题样式

经过我的测试,发现,加了android冒号的属性兼容性更高,有些时候,加了某个属性,但是编译会报错,报错说找不到某一个属性,是在兼容包的values文件中,找不到某一个属性
例如:


<!--背景色-->
<item name="android:windowBackground">@color/backGroundColor</item>

修改为:

<!--背景色-->
<item name="windowBackground">@color/backGroundColor</item>

就会报错,在messages窗口和gradle console窗口看到报错信息,很显然就是找不到windowBackground这个属性
Android的materialDesign风格的主题样式