zoukankan      html  css  js  c++  java
  • 【Android】8.3 自定义主题

    分类:C#、Android、VS2015;

    创建日期:2016-02-17

    一、简介

    在Android系统中,除了内置的主题外,开发人员还可以自定义主题。一般通过在Resources/value文件夹下创建一个style.xml文件来设置自定义主题的样式,比如在该文件中设置默认的颜色、字体大小、背景色等。

    Andoid提供的主题公开了下面的特性(attributes),自定义主题时,在style中重写对应的特性即可。

    • colorPrimary – 应用程序工具条的颜色。
    • colorPrimaryDark – 状态条的颜色,它是深色的colorPrimary 。
    • colorAccent – 控件颜色,例如复选框、单选按钮、文本框等。
    • windowBackground – 屏幕背景色。
    • textColorPrimary – 应用程序的文本颜色。
    • statusBarColor – 状态条颜色。
    • navigationBarColor – 导航条颜色。

    这些特性的含义可通过下图来直观地理解:

    image

    默认情况下,statusBarColor的值设置为colorPrimaryDark的值,也可以将statusBarColor设置为纯色,或者将它设置为 @android:color/transparent,这样可以让上面的状态栏透明。另外,也可以将 navigationBarColor 设置为 @android:color/transparent,即:让下面的导航栏透明。

    二、示例—ch0803ThemeDemo

    1、运行截图

    image

    2、设计步骤

    下面的步骤演示了如何创建自定义主题。

    (1)colors.xml文件--创建自定义的颜色

    在Resources/values文件夹下添加一个colors.xml文件,并在该文件中定义你准备使用的颜色、背景等自定义的样式。例如:

    <?xml version="1.0" encoding="UTF-8" ?>
    <resources>
        <color name="my_blue">#3498DB</color>
        <color name="my_green">#77D065</color>
        <color name="my_purple">#B455B6</color>
        <color name="my_gray">#738182</color>
    </resources>

    当然,你可以根据需要随时修改它。

    (2)styles.xml文件--创建自定义的样式

    在Resources/values文件夹下添加一个styles.xml文件,并在styles.xml中添加资源,指定自定义的主题名称(name)和它从parent继承的样式。

    例如,下面的代码在styles.xml中定义一个MyTheme:

    <?xml version="1.0" encoding="UTF-8" ?>
    <resources>
        <!—parent用于指定父类是哪个主题-->
        <style name="MyTheme" parent="android:Theme.Material.Light">
            <!—重写相关的颜色 -->
            <item name="android:colorPrimary">@color/my_blue</item>
            <item name="android:colorAccent">@color/my_purple</item>
        </style>
    </resources>

    通过以上两个步骤,就可以使用自定义主题了。

    另外,在style.xml文件中还可以包含多个自定义的主题。下面是Resources/vales-21文件夹下style.xml文件的完整示例代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <resources>
      <style name="MyTheme" parent="android:Theme.Material.Light.DarkActionBar">
      </style>
    
      <style name="My0803DemoTheme" parent="android:Theme.Material.Wallpaper">
        <item name="android:colorPrimary">@color/myBlue</item>
        <item name="android:textSize">14sp</item>
        <item name="android:colorAccent">@color/myPurple</item>
      </style>
    </resources>

    注意:Resources/vales-21文件夹下style.xml文件仅对Android 5.0(API 21)及更高版本的Android系统起作用,低于Android 5.0的系统不会应用这种样式。

    (3)ch0803ThemeDemo.cs文件--引用自定义的主题

    要在应用程序级别使用名为“MyTheme”的主题让其对所有页面都起作用,只需要修改AndroidManifest.xml文件的配置:

    <application android:label="MyDemos" android:theme="@style/MyTheme">
    </application>

    要在某个活动页面使用自定义的主题让其近对该页面起作用,只需要在对应的Activity中声明它:

    [Activity(Label = "MyActivity", Theme = "@style/MyTheme")]

    下面是ch0803ThemeDemo.cs文件的完整代码。在Android 6.0系统中运行时,会自动引用Resources/vales-21文件夹下style.xml文件中自定义的My0803DemoTheme,而不是引用Resources/vales文件夹下的style.xml:

    using Android.App;
    using Android.OS;
    namespace MyDemos.SrcDemos
    {
        [Activity(Label = "【例8-3】自定义主题",Theme = "@style/My0803DemoTheme")]
        public class ch0803ThemeDemo3 : Activity
        {
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.ch0803_ThemeDemo3);
            }
        }
    }
  • 相关阅读:
    GO语言常用标准库03---time包
    GO语言常用标准库02---os包
    GO语言常用标准库01---strings包
    GO语言复合类型05---递归
    GO语言练习---对切片进行排序
    GO语言复合类型04---映射
    GO语言复合类型03---切片
    GO语言复合类型02---数组
    [踩坑记录] windows10 应用商店打不开 代码: 0x80131500
    [Linux kali] Kali KDE桌面安装中文输入法 不能登录系统
  • 原文地址:https://www.cnblogs.com/rainmj/p/5194212.html
Copyright © 2011-2022 走看看