如果一个样式用的比较多,以后还可能会修改,我们最好把它做成样式。
样式和主题的定义都是以键值对的形式定义的。
样式是在res/values文件夹下的styles.xml文件中定义的如:
<style name="text_content_style">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">20sp</item>
</style>
在布局文件中引用样式如:
<TextView
style="@style/text_content_style"
android:text="你好啊!" />
以后修改的时候只需要修改样式里面的值就可以了。
样式和主题的区别:
作用范围不同,样式都是作用在一个小控件上,主题作用在一个Activity上或者整个应用程序。样式都在布局文件里面配置,而主题要在清单文件中配置。
主题的定义如:
<style name="blue_bg_theme">
<item name="android:background">#0000ff</item>
</style>
主题 配置在Activity上:
<activity
android:name="com.uc.styletheme.MainActivity"
android:label="@string/app_name"
android:theme="@style/text_content_style" >
如果将主题配置到application节点中,就作用在整个应用程序上。
系统控件默认的样式在sdk/platforms/android-16/data/res/values目录下的styles.xml文件和theme.xml文件中。
若想修改系统控件默认的样式,可以把系统中的样式定义代码复制到自己应用程序的styles.xml文件中,再做修改。
样式的继承:
<style name="RED_NoTitleBar">
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">#ff0000</item>
</style>
<style name="BLUE_NoTitleBar" parent="@style/RED_NoTitleBar">
<item name="android:background">#0000ff</item>
</style>
<style name="BLUE_NoTitleBar.GREEN_NoTitleBar" >
<item name="android:background">#00ff00</item>
</style>
继承有两种方式,如上面的例子所示。 推荐使用第一种写法。
应用场景:夜间模式:做两个样式,在这两个样式之间进行切换。