android应用程序如何设置样式,包括样式定义、单个view设置样式、 全局样式设置、样式继承关系。

1、样式定义

android的样式定义在res/values/style.xml文件中,类似web前端中将样式定义在某个css文件中,但android的style.xml是自动加载的,不需要手动import或link。目前还不了解android是否可以或怎么定义多个style文件。

如下是一组样式的定义

    <!-- 全局字体样式--><style name="DefaultFontStyle"> <item name="android:textSize">18px</item><item name="android:textColor">#0000CC</item></style><!-- 全局背景色--><style name="DefaultBgColor" parent="@style/DefaultFontStyle"> <item name="android:background">#F2F2F2</item></style><!-- 全局样式--><style name="DefaultStyle" parent="@style/DefaultBgColor"> </style>

a. android的样式定义是通过style标签完成的,通过添加item元素设置不同的属性值

b. 样式可以通过设置parent进行继承。上面的DefaultBgColor继承自DefaultFontStyle,而DefaultStyle又继承自DefaultBgColor,这样DefaultStyle就有了字体大小颜色、背景色的属性了。

c. android的主题样式和一般样式的定义是一样的,只是引用时不同,下面将会介绍

2、单个view如何设置样式

比如TextView,设置样式如下

<TextView android:layout_width="match_parent" android:layout_height="wrap_content"android:text="我在做什么:"android:textSize="18px"android:textColor="#0000CC"/>

也可以引用第一部分定义的样式,如下

<TextView android:layout_width="match_parent" android:layout_height="wrap_content"android:text="我在做什么:"style="@style/DefaultStyle"/>

设置view的style属性进行样式调用,推荐使用此种方式将样式和布局分离。其他view及viewGroup设置相同。

对于单个view的更多属性可以参考http://developer.android.com/reference/android/R.styleable.html#View

或具体的某个view的sdk文档xml attribute.

3、全局样式设置

在web前端编程中,可以使用

body {background: #cce8cf;color: #000;font-family: 宋体 verdana, tahoma;font-size: 18px;padding: 1px 2px 0 2px;counter-reset: section;
}

设置全局的样式

div {margin-top: 10px;margin-bottom: 10px;
}

设置单个标签的样式

android中我们同样可以办到,只是这种全局样式被称作主题theme,比如对于整个应用默认字体都要18px,颜色为#0000CC,背景色为#F2F2F2,我们可以通过在AndroidManifest.xml设置application的android:theme属性完成,如下:

<application android:theme="@style/DefaultStyle">

DefaultStyle即为第一部分中定义的主题,在第一部分中我们提到的主题和样式定义一样也是这个意思,只是引用的时候使用android:theme罢了。

下面为单个activity设置主题的代码

<activity android:name=".AccountManageActivity"android:theme="@style/DefaultStyle">

activity的主题还有一些特殊设置,如

android:theme="@android:style/Theme.Dialog"

为对话框样式设置

主题的设置也可以在代码中通过setTheme(R.id.xx)完成。

接下来问题就出现了,如果一个应用设置了application的主题,设置了activity,设置了view的样式,那么view的各个样式属性值究竟是多少呢??

3、样式继承关系

android的样式采取和css中一样的覆盖、继承原则,和面向对象的子类覆盖父类属性、继承没有定义的父类属性值的原则是一样的。

如果一个TextView自己设置了样式,它的ViewGroup设置了样式,activity设置了主题,application设置了主题。

它会先读取自己样式的值,对于自己没有的样式向上查找第一个找到的值即为要采取的值。

依次读取的顺序为View自己的样式->上一层ViewGroup的属性值->上上层ViewGroup的属性值->…->activity主题->activity主题。

例子如下

    <!-- 全局字体样式--><style name="DefaultFontStyle"> <item name="android:textSize">18px</item><item name="android:textColor">#0000CC</item></style><!-- 全局背景色--><style name="DefaultBgColor" parent="@style/DefaultFontStyle"> <item name="android:background">#F2F2F2</item></style><!-- 全局样式--><style name="DefaultStyle" parent="@style/DefaultBgColor"> </style><!-- textView字体样式--><style name="TextViewFontStyle"> <item name="android:textSize">20px</item></style>

application主题为

<application android:theme="@style/DefaultStyle">

activity主题为

<activity android:name=".AccountManageActivity"android:theme="@style/DefaultStyle">

textView样式设置如下

<TextView android:layout_width="match_parent" android:layout_height="wrap_content"android:text="我在做什么:"style="@style/TextViewFontStyle"/>

则textView中最终字体大小为20px,颜色采用activity中设置的0000CC

android style(样式)和theme(主题)设置相关推荐

  1. Style(风格) 和 Theme(主题)

    当你设计你的程序的时候,你可以用Style(风格)和Theme(主题)来统一格式化各种屏幕和UI元素. 风格是一个包含一种或者多种格式化属性的集合,你可以将其用为一个单位用在布局XML单个元素当中.比 ...

  2. Android:设置背景色以及theme(主题)设置(一)

    设置背景色一般有如下三种方法 一.直接在xml文件里设置: android:background="#ffffff" //RGB16进制表现的方法 二.在java文件里设置: Li ...

  3. Android学习笔记之Theme主题的修改设置

    (1)布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns ...

  4. Android 系统自带 Theme(主题)

    系统为我们提供了丰富的系统自带的Theme,当然,你也可以自定义Theme,前提是该Theme必须继承与某个已经存在地Theme,否则编译器会提示错误的. 1. 应用Theme属性两种方式 ①.在An ...

  5. ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

    本文首发于"生信补给站"公众号,https://mp.weixin.qq.com/s/hMjPj18R1cKBt78w8UfhIw 学习了ggplot2的基本绘图元素ggplot2 ...

  6. android Style(样式)的解析

    先说下为啥要使用样式吧,举个例子来说吧 当要做这样的一个布局的时候 每个标签都要写的话,会感觉怎样 <LinearLayoutandroid:layout_width="match_p ...

  7. idea插件Material Theme主题设置方法

    首先:如果要设置下图这种: 1. 先下载插件 2. 设置主题 3. 设置代码界面主题 4. 下载 Atom Material Icons插件

  8. (AS笔记)Android全透明沉浸式主题样式——代码篇

    目录 1.前言 2.Android当前SDK版本号 > API 19-Android 4.4 3.Android当前SDK版本号 > API 21-Android 5.0 4.扩展知识点 ...

  9. Android Toolbar样式定制详解

    前言 Marterial Design出来也有一段时间了,为了紧跟Google的设计规范,决定在项目中使用Toolbar.使用了一段时间之后,发现很多时候原始的Toolbar并不能满足项目的要求.为了 ...

最新文章

  1. 2022-2028年中国胶片手套行业市场研究及前瞻分析报告
  2. 云米冰箱能控制扫地机器人_用冰箱就能掌控全屋家电?云米21Face 428L确实可以...
  3. 比赛的一道题:SCSHOP1.5代码审计
  4. zabbix监控深信服_Zabbix 远程代码执行漏洞CVE202011800
  5. 《概率论与数理统计习题全解指南》中的“计算机得”
  6. Android PopupWindow使用,下拉式PopupWindow,底部式PopupWindow
  7. 判断是否是数字类型php_PHP函数补完:判断变量是否为数字is_numeric()
  8. x86_64平台编译链接汇编程序
  9. 二级分类php代码,php smarty 二级分类代码和模版循环例子
  10. IT桌面运维常识系列 - MDT
  11. 电脑用户计算机名文件夹,win7更改计算机用户名_win7更改用户名文件夹
  12. 2021 App上架到 各应用商店(应用宝,华为,vivo,小米,AppStore)
  13. Go语言开发Windows应用
  14. [MySQL]-主从同步实战-主从搭建
  15. nagios监控 mysql 表结构
  16. 怎么裁剪音频?这个方法建议收藏备用
  17. python人工智能应用实例_90后博士说,从Python到人工智能只差这35个趣味案例,越学越有趣...
  18. zynq7000学习笔记
  19. Kubernetes 2岁了,这个 Party 你一定要来!
  20. Vss2005安装配置

热门文章

  1. 电商后台设计:权限设计
  2. Buffer.from()
  3. 关于一些数据集的下载链接
  4. Android模拟器的ip获取以及模拟器之间socket通信
  5. 以太网是什么拓扑结构
  6. 骁龙695和骁龙750g哪个好
  7. 关于SpringOpenSessionInViewFilter的配置及处理方案
  8. HTTP协议中的1xx,2xx,3xx,4xx,5xx状态码分别表示什么,列举常见错误码及含义
  9. 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
  10. 美国达高特DAKOTA超声波测厚仪检测仪维修