博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android】8.3 自定义主题
阅读量:6342 次
发布时间:2019-06-22

本文共 2139 字,大约阅读时间需要 7 分钟。

分类:C#、Android、VS2015;

创建日期:2016-02-17

一、简介

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

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

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

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

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

二、示例—ch0803ThemeDemo

1、运行截图

2、设计步骤

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

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

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

#3498DB
#77D065
#B455B6
#738182

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

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

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

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

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

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

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

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

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

要在某个活动页面使用自定义的主题让其近对该页面起作用,只需要在对应的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);        }    }}

转载于:https://www.cnblogs.com/rainmj/p/5194212.html

你可能感兴趣的文章
python之MySQL学习——数据操作
查看>>
Quartz定调度简单案例
查看>>
关于微信小程序 modal弹框组件的介绍
查看>>
给一系列的div中的第一个添加class
查看>>
centos6.8 安装jenkins
查看>>
vue-cli3.0+node.js+axios跨域请求session不一样的问题
查看>>
C#发送DKIM签名的邮件
查看>>
python中获取字典的key列表和value列表
查看>>
Windows8中使用IE8等低版本浏览器
查看>>
[图形图像]一次光线追踪的尝试
查看>>
C# 中out,ref,params参数的使用
查看>>
玩转VIM编辑器-vim附加特性
查看>>
Ubuntu下有关Java和数据库的一些工作记录(二)
查看>>
java 线程
查看>>
MySql 时间函数
查看>>
解决php收邮件乱码问题
查看>>
linux shell中'',""和``的区别
查看>>
OceanBase数据库实践入门——手动搭建OceanBase集群
查看>>
WPF学习:3.Border & Brush
查看>>
Docker(二):微服务教程
查看>>