Android篇---Styles和Themes常见用法可能疑点小结
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>
<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>
<style name="Red" parent="@style/CodeFont"> <item name="android:textColor">#FF0000</item> </style>
<style name="CodeFont.Red"> <item name="android:textColor">#FF0000</item> </style>
3.什么时候用@android:style什么时候用@style?
@android:style是引用安卓系统自带的样式的,而@style是引用我们自己在/res/values/styles.xml文件中的样式,实际原理是这样的,资源引用的格式是这样的:
@[package:]style/style_name
UI控件中引用样式时是根据name引用的,而不是xml的文件名,xml的文件名可以任意,但是为了看名知意约定为styles.xml里面定义样式。安卓原生的样式在名为android的包里,所以引用时写成了@android:style。