美文网首页
Android 的Style和theme

Android 的Style和theme

作者: 小飞猪 | 来源:发表于2016-05-20 17:02 被阅读0次

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);

}

相关文章

网友评论

      本文标题:Android 的Style和theme

      本文链接:https://www.haomeiwen.com/subject/ytynrttx.html