样式(Style)是用来指定View或者window的外观和格式的一组属性集合。可以用来指定高度、内边距、字体颜色、字体大小、背景颜色等属性。样式定义在独立于布局文件的XML文件中。保证了内容和设计的独立性。

例如

<TextView
    android:layout_width="fill_parent"android:layout_height="wrap_content"android:textColor="#00FF00"android:typeface="monospace"android:text="@string/hello" />

应用style文件后

<TextViewstyle="@style/CodeFont"android:text="@string/hello" />

所有和样式相关的属性都被移出了布局文件,放到了叫做CodeFont的样式文件中。

主题(theme)是与Activity或者应用相关的样式,当样式作为主题存在时,Activity或者应用中的所有View的相关属性会随其指定的样式改变。例如,当CodeFont样式文件作为一个Activity的主题的时候,那么其中所有的字体都会变成CodeFont所声明的那样。

样式的定义

样式文件保存在res/values/目录下,文件名可以是任意的,但是必须是.xml文件。 根节点必须是标签

一个样式对应一个

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="CodeFont" parent="@android:style/TextAppearance.Medium"><item name="android:layout_width">fill_parent</item><item name="android:layout_height">wrap_content</item><item name="android:textColor">#00FF00</item><item name="android:typeface">monospace</item></style>
</resources>

每个的子元素都会在编译器被转换为应用资源对象,可以被

继承

<style name="GreenText" parent="@android:style/TextAppearance"><item name="android:textColor">#00FF00</item>
</style

>
如果继承自定义的样式文件,就不需要parent属性,只需要在新的样式名称前边加上要继承的样式名称作为前缀,以“.”分隔。

例如继承上边的CodeFont,并把字体换成红色:

<style name="CodeFont.Red"><item name="android:textColor">#FF0000</item>
</style>

也可以继续向下继承,如CodeFont.Red.Big……

注意:此方法只适用于自定义样式,不能应用与Android内置的样式文件,而必须用parent属性来实现继承。

样式属性

在了解了如何定义样式之后,接下来学习哪类样式属性是可用的。对其中的一些我们已经很熟悉了,比如layout_width,textColor。当然,还有很多我们能够使用的属性。 我们可以在与View相应的XML标签下找到属性信息,例如,TextView 的XML下的属性可以用于为TextView元素定义的样式中(或其子类)。其中有android:inputType这个属性,因此我们可以在样式中定义name为android:inputType的元素,如下:

EditText有标签下有inputType属性

<EditTextandroid:inputType="number"... />

那么可以在样式文件中声明为:

<style name="Numbers"><item name="android:inputType">number</item>...
</style>

我们就可以将EditText替换成这个样子:

<EditTextstyle="@style/Numbers"... />

记住View对象接收的样式属性不完全相同,如果样式中的一些属性不被View对象所支持,那么不支持的属性就会被View忽略掉。

一些属性信息,只是用于主题,这些属性与整个窗口(window)关联,不与任何View关联。 例如,一些样式属性,可以隐藏应用的标题,隐藏状态栏,或者改变窗口的背景。这些属性就不属于任何View对象。

例如,windowNoTitle和windowBackground属性仅当样式应用于Activity或Application的时候才会起效。

为UI设置样式和主题

为Activity或application设定主题

为应用中所有Activity设定主题,可以在AndroidManifest.xml文件下的标签添加android:theme属性: 如:

如果只为某个Activity添加主题,只需要在相应的Activity标签下,添加android:theme属性即可。

如果你喜欢某个主题,但是想对其做一些调整。那么就添加此主题作为你的自定义主题的parent,例如:你可以更改android:Theme.light主题为自己想要的颜色,就像这样

<color name="custom_theme_color">#b0b0ff</color>
<style name="CustomTheme" parent="android:Theme.Light"><item name="android:windowBackground">@color/custom_theme_color</item><item name="android:colorBackground">@color/custom_theme_color</item>
</style>

注意:windowBackground的颜色必须是对其他资源的应用,不能直接指定颜色,而colorBackgroud则可以直接指定

基于平台选择主题

新版本的Android应用程序提供额外的theme,你可能想使用它们在这些平台上运行,同时与旧版本兼容。你可以通过使用自定义theme资源选择不同的parent theme,根据平台版本之间切换完成。

例如,这里声明一个自定义theme,相当于是标准平台上默认的light theme。它将在XML文件的res/values 目录下(通常是res/values/styles.xml ):

<style name="LightThemeSelector" parent="android:Theme.Light">...
</style>

当程序运行在Android3.0(API等级11)或更高的版本时使用新的holographic theme,你可以在res/values-v11 的XML文件中放置另一个声明theme,但holographic theme的parent theme像这样设置:

<style name="LightThemeSelector" parent="android:Theme.Holo.Light">...
</style>

现在可以如其他的theme那样使用这个theme,如果你的应用程序运行在Android3.0或更高的版本时,将自动切换到holographic theme。 你可以在R.styleable.Theme中找到你能够使用的theme的标准属性列表。

android样式和主题相关推荐

  1. Android样式和主题背景

    简介: 本文将简单介绍Android样式与主题背景的相关内容 文章目录 前言 一.样式 二.主题背景 三.样式层次结构 四.创建并应用样式 五.自定义默认主题 六.添加特定于版本的样式 七.常见的主题 ...

  2. ​Android - 样式和主题

    style 样式资源定义了 UI 的格式和外观. 样式可以应用于单个视图(从布局文件中)或整个 Activity 或应用程序(从清单文件中). 定义样式 样式在与指定布局的 XML 不同的 XML 资 ...

  3. Android样式和主题背景·

    简介: 本文将简单介绍Android样式与主题背景的相关内容 文章目录 前言 一.样式 二.主题背景 三.样式层次结构 四.创建并应用样式 五.自定义默认主题 六.添加特定于版本的样式 七.常见的主题 ...

  4. Android样式和主题(二):系统有哪些主题

    Android系统自带Theme 简介 Android系统在4.0之前没有设计可言,打开APP就是黑乎乎一片,这是最原始的Theme主题 在Android4.0有了Holo主题,Holo本身继承于Th ...

  5. android colorstatelist_Android 样式系统 | 主题背景属性

    在 Android 样式系统系列的前几篇文章中,我们介绍了主题背景与样式的区别,以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意,请点击链接回顾: Android 样式系 ...

  6. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题

    50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...

  7. Android从零开始:创建样式和主题

    作为Android开发人员,我们倾向于主要专注于应用程序的功能. 但是,仅凭功能性是远远不够的. 在如今托管了超过一百万个应用程序的Google Play上,外观与功能同等重要,甚至更多. 如果您觉得 ...

  8. Android 用户界面---样式和主题(Styles and Themes)(二)

    样式属性 理解了样式是如何定义的之后,就需要学习<item>元素都定义了那些有效的样式属性类型.你可能已经熟悉了像layout_width和textColor属性,但是还有更多的可以使用的 ...

  9. Android中样式及主题

    Android应用程序中不可避免的需要使用的样式和主题,样式指定一般指定View的高度.字体.字体颜色.背景,Android里的样荐定义在Style.xml文件里.主题也是一种样式,只不过它是应用在整 ...

最新文章

  1. python会不会出现内存泄露_Python内存泄漏和内存溢出的解决方案
  2. Tengine编译安装config项目清单
  3. 自动转发outlook的邮件
  4. 宣传推广费用_企业如何做好网络推广,提高网络推广的转化率?
  5. 利用流水线改进代码中的if处理流程
  6. 一句话总结Windbg 32位版本和64位版本的选择
  7. android 无法运行 项目红叉_Android Studio 项目报红叉没法运行的几种解决办法总结...
  8. maya的颤动怎么做_必看!新手学习MAYA的几个建议
  9. 面试中关于多线程同步,你必须要思考的问题
  10. python启动http服务_Python命令开启http.server服务器
  11. php excelreader 中文,如何解决php excel reader导出excel中文乱码?
  12. JQuery动画之淡入淡出动画
  13. C#中的i++和++i
  14. CCF201609-4 交通规划(100分)
  15. Cocos2d-x组件的创建与挂载
  16. 【禁忌搜索】基于禁忌搜索算法实现经典VRP问题的matlab仿真
  17. 伺服电机三环控制的原理(位置环,运动环,电流环)
  18. 经典怀旧:VirtualBox安装Win95 - 详细图片展示
  19. 灰色预测(MATLAB)
  20. 加拿大Introspect I3C 协议分析仪(Analyzer)及训练器(Exerciser)

热门文章

  1. 计算机专业高级工,高级工相当于什么职称
  2. unity实现自转及公转
  3. 转 《五蠹》参考译文
  4. js 异步循环使用递归
  5. mysql和mongodb软件_MySQL和MongoDB设计实例对比
  6. 小红书品牌推广注意事项有哪些?
  7. 因AlphaFold获300万美元“科学界奥斯卡奖”,DeepMind创始人:震惊,捐了
  8. 陆金所去Oracle化,平安科技500 IT人亟待转型
  9. 如何 救 酷派s180
  10. d3.js 力导向图 关系连接线 使用 path 标签时不显示的问题