1.Style和Theme
Android的style分为两个方面:
1.Theme 是针对窗体级别的,改变窗体样式
2.Style 是针对窗体元素级别的,改变指定控件或Layout的样式
Android 系统的themes.xml和style.xml(位于系统源代码frameworks\base\core\res\res\values\)包含很多系统定义好的style。Style和Theme都是资源。
1)Style是包含一种或者多种格式化属性的集合,可以将其作为一个单位用在布局XML单个元素中。例如:定义风格(定义文字的字号和颜色),然后用在view元素中。
2)Themeye是包含一种或者多种格式化属性的集合,可以将其作为一个单位用所有的Activity或某个Activity中。例如:定义主题(为Window Frame和Panel的前景和背景定义了一组颜色并为菜单定义了文字的大小和颜色),然后用在Activity中。
2.自定义Style和Theme
自定义Style步骤:
1.在res/values目录下新建style.xml
2.增加一个<resource>根节点,对每一种Style定义name,也可以增加parent属性
3.<style>元素内部可以有多个item
例如:
<resource>
<style name="SpecialText" parent="@style/Text">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#0000000<item>
</style>
</resource>
在某个View中只需 style="@style/SpecialText"即可引用该Style。
自定义Theme 的步骤和自定义Style类似,不同的是Theme应用在Android Manifest中定义的
和元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。
<resource>
<style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item ame="panelForegroundColor">#FF000000</item>
<item "panelTextColor">?panelForegroundColor</item>
</style>
</resource>
注意我们用了@符号和?符号来应用资源。@符号表明了我们应用的资源是前边定义过的(或者在前一个项目中或者在Android 框架中)。问号?表明了我们引用的资源的值在当前的主题当中定义过。通过引用在里边定义的名字可以做到(panelTextColor用的颜色和panelForegroundColor中定义的一样)。这中技巧只能用在XML资源当中。
在manifest当中设置主题
打开AndroidManifest.xml 文件,编辑标签,让其包含android:theme属性,值是一个主题的名字,如下:
<application android:theme="@style/CustomTheme"></application>
在程序当中设置主题
如果需要的话,你可 以在Activity当中通过使用方法setTheme()来加载一个主题。注意,如果你这么做的话,你应该初始化任何View之前设置主题。比如,在调 用setContentView(View) 和inflate(int, ViewGroup)方法前。这保证系统将当前主题应用在所有的UI界面。例子如下:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
网友评论