第十四章:样式(Style)和主题(Theme)
简介
Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight、WPF)类似。比如我们遇到特殊的节日我们只需变更我们的Style和Theme就可以切换一种新的Style和Theme。还有现有的一些应用提供我们可以自定义UI风格,就是应用的这个原理。Android的主题样式文件存储在res\values目录下,如res\values\styles.xml。
样式(Style)
Style我们可以应用到单个组件或者一类组件,比如我们可以设置组件的字体、颜色等。
下面的文件就是Android SDK(Version16)提供的一个Style文件片段(详细文件在:\android-sdk\platforms\android-16\data\res\values\styles.xml),如下所示我们可以看到系统的各个控件的默认的样式风格
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Global Theme Styles -->
<eat-comment />
<style name="WindowTitleBackground">
<item name="android:background">@android:drawable/title_bar</item>
</style>
<style name="WindowTitle">
<item name="android:singleLine">true</item>
<item name="android:textAppearance">@style/TextAppearance.WindowTitle</item>
<item name="android:shadowColor">#BB000000</item>
<item name="android:shadowRadius">2.75</item>
</style>
<style name="Widget.EditText">
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:clickable">true</item>
<item name="android:background">?android:attr/editTextBackground</item>
<item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
<item name="android:textColor">?android:attr/editTextColor</item>
<item name="android:gravity">center_vertical</item>
</style>
<style name="Widget.ExpandableListView" parent="Widget.ListView">
<item name="android:groupIndicator">@android:drawable/expander_group</item>
<item name="android:indicatorLeft">?android:attr/expandableListPreferredItemIndicatorLeft</item>
<item name="android:indicatorRight">?android:attr/expandableListPreferredItemIndicatorRight</item>
<item name="android:childDivider">@android:drawable/divider_horizontal_dark_opaque</item>
</style>
<style name="Widget.ImageButton">
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:scaleType">center</item>
<item name="android:background">@android:drawable/btn_default</item>
</style>
<style name="Widget.WebView">
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:scrollbars">horizontal|vertical</item>