1.style和theme的区别:

简而言之,style指的就是安卓中一个UI控件的样式,而themes指的是安卓中一个activity界面或者整个安卓应用整体的样式。theme的范围比style的范围大。

2.style的继承用法:(全由笔者根据官方文档亲测,可放心使用,注意:样式的定义都在/res/values/style.xml中,而样式的使用在activity的布局文件里)

  • 对于继承安卓原装style,用法如下代码块,代码的意思是将安卓系统自带的TextAppearance样式中的textColor属性改成绿色,其他的属性不变:

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

    然后在UI控件中通过<style>标签的name属性的值引用该样式,例如,在<TextView>中引用上面定义的样式代码块如下:

    <TextView
    android:text="hello style"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/GreenText"
    />
  • 对于继承自定义的样式,有两种方式,例如如果我们已经有自定义好的父样式,代码如下:
    <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>

    第一种是跟上面方法一样的,用parent属性,后面指定父样式,例如:

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

    第二种是继承自定义父样式特有的方式,使用符号.表示继承关系。例如:

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

    样式的使用方法依然是在UI控件中通过<style>标签的name属性的值引用该样式,注意,名字是<style>标签中name属性的值

3.什么时候用@android:style什么时候用@style?

@android:style是引用安卓系统自带的样式的,而@style是引用我们自己在/res/values/styles.xml文件中的样式,实际原理是这样的,资源引用的格式是这样的:

@[package:]style/style_name

UI控件中引用样式时是根据name引用的,而不是xml的文件名,xml的文件名可以任意,但是为了看名知意约定为styles.xml里面定义样式。安卓原生的样式在名为android的包里,所以引用时写成了@android:style。

Android篇---Styles和Themes常见用法可能疑点小结的更多相关文章

  1. iOS开发多线程篇 08 —GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  2. 你不可不知的 React Native 混合用法(Android 篇)

    前言 当前 React Native 虽说版本更新比较快,各种组件也提供的很全面了,但是在某些情况下,混合开发的方式才会快速缩短开发周期,原因无非就是原生平台的"底蕴"无疑更深,拥 ...

  3. iOS 开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  4. iOS开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  5. 第二节:框架前期准备篇之AutoFac常见用法总结

    一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点点小小的风波,我说我的好,他说他的好,非常容 ...

  6. 框架前期准备篇之AutoFac常见用法总结 转载

    框架前期准备篇之AutoFac常见用法总结 一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点 ...

  7. Android开发面试经——6.常见面试官提问Android题②(更新中...)

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...

  8. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  9. Linux下命令行cURL的10种常见用法示例

    curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,下面这篇文章主要给大家分享了在Linux中命令行cURL的10种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...

随机推荐

  1. C# 32位程序在64位系统下注册表操作

    在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与 ...

  2. Pure CSS 的网格布局(比bootstrap小很多且易扩展的css UI)

    (转自百度经验)http://jingyan.baidu.com/article/48a42057c44fdba9242504dd.html Pure是一个简单.实用的CSS框架,鉴于目前网上对pur ...

  3. MYSQL中coalesce函数的用法

    coalesce():返回参数中的第一个非空表达式(从左向右依次类推): 例如: select coalesce(null,4,5); // 返回4 select coalesce(null,null ...

  4. 萌新笔记之Nim取石子游戏

    以下笔记摘自计算机丛书组合数学,机械工业出版社. Nim取石子游戏 Nim(来自德语Nimm!,意为拿取)取石子游戏. 前言: 哇咔咔,让我们来追寻娱乐数学的组合数学起源! 游戏内容: 有两个玩家面对 ...

  5. redis win连接以及配置连接密码

    redis连接格式为 redis-cli -h host -p port -a password 但由于刚安装的redis是没有密码的 因此可以进行直接连接, cd转到redis目录里 redis-c ...

  6. 洛谷P1220 关路灯(区间dp)

    关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...

  7. python 之 日志输出格式

    # 定义日志文件的路径LOG_PATH=r'D:\code\SH_fullstack_s1\day15\ATM\log\access.log'BOSS_LOG_PATH=r'D:\code\SH_fu ...

  8. js原型和构造函数

    前言 从应用层面深入理解原型模式和js中的构造函数. 构造函数(constructor) js中的任何对象都有自己的构造函数.js中使用字面量声明的普通对象({})或数组([])等子对象本质上都是使用 ...

  9. SpringBoot配置属性二

    server配置 server.address指定server绑定的地址 server.compression.enabled是否开启压缩,默认为false. server.compression.e ...

  10. 配置vmware的固定ip

    一 .概述 为什么要配置固定IP呀?这个很容易解释啊,因为配置集群要设置固定IP(主结点需要管理子结点,通过固定IP识别机器),因为你访问虚拟机方便(不固定IP访问前还需要先查下虚拟机当前分配IP,比 ...