概述

根据 Android 官方的解释

A style resource defines the format and look for a UI. A style can be applied to an individual View (from within a layout file) or to an entire Activity or application (from within the manifest file).

style 定义的UI格式和外观,它可以单独被一个 View 使用,也可以给Activity使用或者作为 Application 风格(前者在 layout中使用 android:style=”XXXX” 后者在 manifest 文件的 application 节点下 使用 android:theme=”XXXX” )。

其实总的来说, style 就是一组属性集合,例如 width ,padding,color,height,等,更复杂一点的包括 windowNoTitle,windowBackground,windowContentOverlay 等高级属性。

其实 style 和 web 开发的 stylesheets 很类似,是一种把内容和样式分离的思想,这种单纯的编程思想有助于我们将问题剥离能够更好的帮助我们分析问题,另外一点就是,提高了代码的复用率(似乎这个是为了省力),同时也让我们的代码看起来更干净,层次分明呀。

tip:style 的引用根据的是 sytle 的name 属性,而不是xml的文件名称。

例如:

style 中的代码

layout 中的使用

实际上,resources 下的每一个 style 节点在编译的时候都会被编译成一个 application resource 对象,

常见用法

单独使用在一个 View 上

只对当前 View 起作用,即使当前 View 是一个 ViewGroup 它也只是对这个 ViewGroup 起作用,而不会影响其中的 child View 。

使用在 Activity 或者 Application 上,这样的话是影响了所有 Application 下的 UI 格式和风格

    

关于 style 的继承

style 允许继承,你可以在子 style 中重写父 style 的属性,从而提高了灵活程度,下面是一个 example,通过 parent 属性,实现继承,子类命名和父类命名存在一定关系,子类命名为:父类命名.扩展名称。如果是自定义的 style 可以通过命名继承来实现继承,子类名称为 父类名称.扩展名称。

style cart_tv.brand 是继承自 cart_tv 的,相同属性子类会覆盖父类的值。

tip:这种继承命名,不能使用在系统自带的 style上,你需要显示的使用 parent 属性,进行声明,例如:

parent=”android:style/Theme.Dialog” 声明了这个 style 继承自系统的 Theme.Dialog

如何使用系统的 Style 和 Theme

系统的 style 在 R.style 静态类中,你可以在 xml 文件中使用以下类似代码,实现引用

"@android:style/Theme.NoTitleBar".

也就是 @android:style/你要引用的属性名称

更多相关文章

  1. Android Relativelayout布局属性
  2. 关于android:focusable属性
  3. Android Activity 属性介绍
  4. View常见XML属性及相关方法
  5. EditTextView 属性

随机推荐

  1. 一次授权的安全测试
  2. 给Swagger换了个新皮肤,瞬间高大上了!
  3. 程序员的快乐就是这么朴素无华且枯燥
  4. 微服务聚合Swagger文档,这波操作是真的香!
  5. Elasticsearch 升级 7.x 版本后,我感觉掉
  6. 我扒了半天源码,终于找到了Oauth2自定义处
  7. 面对成百上千台服务器产生的日志,试试这款
  8. 还在百度Linux命令?推荐一套我用起来特顺
  9. 被我用烂的DEBUG调试技巧,专治各种搜索不
  10. SharePoint 排错: SharePoint Online Ass