Android 的Style和theme

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.增加一个根节点,对每一种Style定义name,也可以增加parent属性

3.

在某个View中只需 style="@style/SpecialText"即可引用该Style。

自定义Theme 的步骤和自定义Style类似,不同的是Theme应用在Android Manifest中定义的

和元素将主题添加到整个程序或者某个 Activity,但是主题是不能应用在某一个单独的View里。

注意我们用了@符号和?符号来应用资源。@符号表明了我们应用的资源是前边定义过的(或者在前一个项目中或者在Android 框架中)。问号?表明了我们引用的资源的值在当前的主题当中定义过。通过引用在里边定义的名字可以做到(panelTextColor用的颜色和panelForegroundColor中定义的一样)。这中技巧只能用在XML资源当中。

在manifest当中设置主题

打开AndroidManifest.xml 文件,编辑标签,让其包含android:theme属性,值是一个主题的名字,如下:

在程序当中设置主题

如果需要的话,你可 以在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);

}

你可能感兴趣的:(Android 的Style和theme)