Theme

发布时间:2026/10/17 3:25:01
Theme 样式和主题Android的Styles(样式)和Themes(主题)类似Web开发里的CSS用来定义一组已有属性和对应的值将这组值直接赋给一个组件方便将页面内容和布局呈现分开。Style和Theme在Android里的定义方式是完全一样的两者只是概念上的区别Style用在单个视图或控件上Theme用于Activity或整个应用程序。因为Theme作用范围大所以需要比Style包含更多的定义属性值的项目(item)。Android的Style或Theme与Web的CSS相比只作用于一个对象即只能通过android:themestyle/AppTheme或stylestyle/MyStyle指定一个值。而CSS则可以通过class属性在DOM元素上定义多个样式来达到组合的效果。Style也有CSS没有的功能那就是继承(Inheritance)。(CSS通过LESS和SASS这些工具也获得继承的能力。)引用自定义 Style 时格式固定为style/样式名无需加android:前缀。style的继承方式通过parent属性继承Style通过点连接继承Style通过 “.” 继承只适用与自定义的style继承。Style的成员style中的成员是属性即在style中重写属性值。属性的值通过color等指定或者通过?attr引用其它属性。style和declare-styleable的区别style和declare-styleable是 Android 资源系统中两个‌用途完全不同‌的标签核心区别在于‌style用于定义 UI 外观的集合赋值而declare-styleable用于声明自定义控件可接受的属性列表定义接口‌。‌‌核心区别对比‌作用不同‌‌style‌是一组属性值的集合用于‌复用‌视图的外观设置如颜色、尺寸、字体。它本身不定义新属性而是给已有的属性包括系统属性和自定义属性赋予具体值。‌declare-styleable‌用于‌声明‌自定义 View 支持哪些 XML 属性。它告诉编译器和系统“这个自定义控件可以接收这些属性”并生成对应的R.styleable数组以便代码读取。‌‌‌文件位置不同‌‌style‌通常定义在res/values/styles.xml中。‌declare-styleable‌必须定义在res/values/attrs.xml中且内部包含attr标签。‌‌‌代码引用方式不同‌‌style‌在布局 XML 中通过stylestyle/YourStyleName引用在 Java/Kotlin 中通过context.setTheme()或View.setStyle()间接应用。‌declare-styleable‌在 Java/Kotlin 代码中通过context.obtainStyledAttributes(attrs, R.styleable.YourStyleableName)获取TypedArray来解析属性值。‌‌关键逻辑关系‌依赖关系‌declare-styleable内部引用的attr可以独立存在也可以被包裹其中。若属性被包裹在declare-styleable中系统会为该组属性生成一个整数数组索引R.styleable方便批量读取若未包裹则只能单独通过AttributeSet手动解析无法使用obtainStyledAttributes高效获取。‌命名空间‌在布局中使用declare-styleable定义的自定义属性时必须在 XML 根节点声明自定义命名空间如xmlns:apphttp://schemas.android.com/apk/res-auto而style中的属性若为系统属性则无需命名空间若为自定义属性也需命名空间。‌生成产物‌style生成R.style资源 ID。declare-styleable生成R.styleable数组及R.attr属性 ID。‌‌简单示例xml!-- attrs.xml: 声明自定义控件能接收什么属性 -- declare-styleable nameCustomButton attr namecustomColor formatcolor/ !-- 定义属性 -- /declare-styleable !-- styles.xml: 给属性赋值形成可复用的样式 -- style nameRedButton item namecustomColorandroid:color/holo_red_dark/item !-- 赋值 -- /style‌总结‌写自定义 View 时先用declare-styleable‌定义‌“我能接受什么参数”再用style‌配置‌“这些参数的默认或批量值”。两者配合实现灵活的 UI 定制。‌‌

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询