Android Style和自定义属性

文章目录

  • 1. Android Style & Theme
    • 1.1 基本概念
      • 1.1.1 Style(样式)
      • 1.1.2 Theme(主题)
    • 1.2 创建和应用style
    • 1.3 扩展和自定义style
    • 1.4 创建和应用theme
    • 1.5 扩展和自定义theme
    • 1.6 添加指定版本的style
    • 1.7 Style层级
      • 1.7.1 TextAppearance
  • 2 Android 自定义属性
    • 2.1 创建自定义属性步骤
    • 2.2 AttributeSet
    • 2.3 TypedArray
    • 2.4 declare-styleable
    • 2.5 obtainStyledAttributes
      • 2.5.1 obtainAttributes(AttributeSet set, int[] attrs)
      • 2.5.2 obtainStyledAttributes(int[] attrs)
      • 2.5.3 obtainStyledAttributes(int resId,int[] attrs)
      • 2.5.4 obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
  • 3 几种赋值属性方法
    • 3.1 将单个属性直接应用于view
    • 3.2 将一个style应用于view
    • 3.3 通过defStyleAttr设置默认style
    • 3.4 通过defStyleRes设置默认style
    • 3.5 将theme应用于一个view集,一个activity或者整个应用

1. Android Style & Theme

1.1 基本概念

Styles and themes on Android allow you to separate the details of your app design from the UI structure and behavior, similar to stylesheets in web design.

Android上的style和theme允许你将应用中设计的详细细节与UI结构和行为进行分离,类似于web设计中的样式表。

1.1.1 Style(样式)

A style is a collection of attributes that specify the appearance for a single View. A style can specify attributes such as font color, font size, background color, and much more.

Style是一些可以指定单个View外观的属性集合,一个style可以指定一些属性比如字体颜色,字体大小,背景颜色等等。

1.1.2 Theme(主题)

A theme is a type of style that’s applied to an entire app, activity, or view hierarchy—not just an individual view. When you apply your style as a theme, every view in the app or activity applies each style attribute that it supports. Themes can also apply styles to non-view elements, such as the status bar and window background.

Theme是一种应用于整个app,activity或者view层次的style,而不仅仅是单独的view。当你应用你的style作为theme时,每一个app或者activity中的view将应用它支持的每个style属性。theme还可以将style应用于非view元素,例如状态栏和窗口背景。

Style和theme定义在res/values/文件夹下,通常命名为styles.xml(也可以根据需求命名为其他文件名)。

1.2 创建和应用style

打开res/values/styles.xml文件

  1. 添加一个以独特ID命名的