样式(Style)和主题(Theme)资源——样式资源

时间:2022-09-02 16:40:43

样式和主题资源都是用于对Android应用进行“美化”的,只要充分利用Android应用的样式和主题资源,开发者可以开发出各种风格的Android应用。

样式资源:

        如果我们经常需要对某个类型的组件指定大致相似的格式,比如字体、颜色、背景色等,如果每次都要为View组件重复指定这些属性,无疑会有大量的工作量,而且不利于项目后期的维护。

类似于World、World也提供了样式来管理格式:一个样式等于一组格式的集合,如果设定某段文本使用某个样式,那么该样式的所有格式都会整体应用于这段文本。Android的样式与此类似,Android样式也包含一组格式,为一个组件设置某个样式时,该样式所包含的全部格式将会应用于该组件。

提示:一个样式相当于多个格式的集合,其他UI组件通过style属性来指定样式,这就相当于把该样式包含的所有格式同时应用于该UI组件。

Android的样式资源文件也放在/res/values 目录下,样式资源文件的根元素是<resources.../>元素,该元素内可包含多个<style.../>子元素,每个<style.../>元素定义一个样式。<style.../>元素指定如下两个属性。

  • name:指定样式的名称。
  • parent:指定该样式所继承的父样式。当继承某个父样式时,该样式将会获得父样式中定义的全部样式。当然,当前样式也可覆盖父样式中指定的格式。

<style.../>元素内包含多个<item.../>子元素,每个<item.../>子元素定义一个格式项。

例如为应用定义如下样式文件。

程序清单:\res\values\my_style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 定义一个样式,指定字体大小、字体颜色 -->
<style name="style1">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#00d</item>
</style>
<!-- 定义一个 样式,继承前一个样式-->
<style name="style2" parent="@style/style1" >
<item name="android:background">#ee6</item>
<item name="android:padding">8dp</item>
<!-- 覆盖样式中指定的属性 -->
<item name="android:textColor" >#000</item>
</style>
</resources>

上面的样式资源只能怪定义了两个样式,其中第二个样式继承了第一个样式,而且第二个样式中的textColor属性覆盖了父样式中的textColor属性。

一旦定义了上面的样式资源之后,接下来就可以在XML资源中按如下语法格式来使用样式了:

@[<package_name>:]style/file_name

下面是该示例中的界面布局文件,该布局文件中包含两个文本框,这两个文本框分别使用两个样式。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<!-- 指定使用style1的样式 -->
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="样式1的格式"
style="@style/style1"/>
<!-- 指定使用style2的样式 -->
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="样式2的格式"
style="@style/style2"/>
</LinearLayout>

上面的界面布局文件中并未为两个文本框指定任何格式,只是为它们分别指定了使用style1、style2的样式,这两个样式包含的格式就会应用到这两个文本框。运行上面的程序,将看到如图6.10所示的界面。

样式(Style)和主题(Theme)资源——样式资源

样式(Style)和主题(Theme)资源——样式资源的更多相关文章

  1. 第十四章:样式&lpar;Style&rpar;和主题&lpar;Theme&rpar;

    简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类 ...

  2. Android 自定义属性&lpar;attrs&rpar;、样式&lpar;Style&rpar;、主题&lpar;Theme&rpar;

    Android 自定义属性(attrs).样式(Style).主题(Theme) https://www.cnblogs.com/dandre/p/4507024.html https://blog. ...

  3. Android 样式 &lpar;style&rpar; 和主题&lpar;theme&rpar;

    转载:https://gold.xitu.io/post/58441c48c59e0d0056a30bc2 样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字 ...

  4. Android样式&lpar;style&rpar;和主题&lpar;theme&rpar;

    样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字体颜色.字号.背景色等许多属性. 样式是在与指定布局的 XML 不同的 XML 资源中进行定义. Andro ...

  5. 20&period;&lpar;转&rpar;Android的样式&lpar;Style&rpar;和主题&lpar;Theme&rpar;

    Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes ...

  6. android的样式&lpar;style&rpar;与主题&lpar;theme&rpar;

    Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes ...

  7. 安卓样式Style和主题Theme

    1. 区别 不过style是针对view来说的,比如TextView和EditText这些:而Theme必须针对整个activity或者整个application 2. 样式 创建一个样式,根元素 & ...

  8. 样式styles和主题theme

    参考资料:http://blog.csdn.net/sshhbb/article/details/7219838/ /values/styles.xml <resources> <! ...

  9. vue 内联样式style三元表达式(动态绑定样式)

    <span v-bind:style="{'display':config.isHaveSearch ? 'block':'none'}" >动态绑定样式</sp ...

  10. Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

    原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上 ...

随机推荐

  1. Java判断访问设备为手机、微信、PC工具类

    package com.lwj.util; import javax.servlet.http.HttpServletRequest; /** * 判断访问设备为PC或者手机--工具类 * * @de ...

  2. JS Array ECMAScript5 Methods

    JavaScript 的新版本(ECMAScript 5)中,为数组新增了一些方法.这些方法包括: forEach(f [,o]): 此方法类似于for/in循环,其作用是遍历整个数组并执行函数的某些 ...

  3. &lbrack;YY&rsqb;已知逆序列求原序列(二分,树状数组)

    在看组合数学,看到逆序列这个概念.于是YY了一道题:已知逆序列,求出原序列. 例子: 元素个数 n = 8 逆序列 a={5,3,4,0,2,1,1,0} 则有原序列 p={4,8,6,2,5,1,3 ...

  4. WordPress无法连接MySQL数据库

    安装WordPress,需要配置MySQL数据库.配置好用户名和密码后居然还是报错. 通过抓包软件,发现根本没有数据包发往3306端口. 只能google之,发现是因为selinux的原因 解决方案: ...

  5. CVT电子集团--笔试部分试题

    之前有在网上答了下CVT的网上笔试题,特别把它们都弄下来,答案参考,不一定是对的,有错希望大家能提出来. 1.有关系R和S,R∩S等价于(B) A.S-(R-S)    B.R-(R-S)   C.( ...

  6. 自定义MVP &period;net框架

      一个自定义MVP .net框架 AngleFrame   摘要:本篇是本人在完成.net平台下一个项目时,对于MVP框架引发的一些思考,以及开发了一个小型的配置型框架,名字叫作AngleFrame ...

  7. 华硕 F1A55-M LX3系列跳线图

    天啊,第一次遇到这么变态的主板跳线...浪费我好久时间找到这跳线图

  8. seq2seq-chatbot:200 行代码实现聊天机器人

    Chatbot in 200 lines of code CPU 跑不动 github:https://github.com/zsdonghao/seq2seq-chatbot 更多英文,中文聊天机器 ...

  9. How to create DB2 user function easily by DB Query Analyzer 6&period;03

    How to create DB2user function easily by DB Query Analyzer 6.03 Ma Genfeng (Guangdong Unitoll Servic ...

  10. idea使用优化

    一.idea设置目录说明 1.bin目录包含我们的启动文件.虚拟机配置信息和idea属性信息等 2.help目录:帮助文档 3.jre64 : idea自带的jre环境 4.lib:idea所依赖的类 ...