前言
这三个概念贯穿Android框架的方方面面,是Android程序设计中很重要的一环,理解它们,并能学以致用,不但可以让你的代码变得简洁明了,还可以让你的应用更加灵活。但目前网上资料对这块介绍的知识点往往比较散,不是很系统全面,在此总结此文一篇。
Attr:属性,风格样式的最小单元;
Style:风格,它是一系列Attr的集合用以定义一个View的样式,比如height、width、padding等;
Theme:主题,它与Style作用一样,不同于Style作用于个一个单独View,而它是作用于Activity上或是整个应用。
Attr的定义
我们先举一个框架中的源码例子,用来介绍下Android中是如何定义一个Attr的,比如以下创建一个简单的TextView布局
TextView,其中layout_width对应到框架中的attr信息如下:
...
从上可以看到layout_width可以使用三个枚举值,并且其中fill_parent和match_parent的value值都为-1。做过Android开发的童鞋肯定知道,从2.2开始Android框架就推荐用match_parent代替fill_parent,而以上代码正实现了兼容,因为它们对应的值都为-1。
以上的textStyle的属性信息在源码中如下:
它也对应了三个值,但这里却使用了flag标签。细心的童鞋可能已经明白了flag与enum的差别,flag表示这几个值可以做或运算,比如上面的textStyle,你