Applying Styles and Themes - 应用Style和Theme - Android官方文档中文翻译
2011-01-11 06:59:21 来源:WEB开发网然而,一些style属性只能被当作一个theme来应用,而不受任何View元素的支持。例如那些用于隐藏应用程序标题、隐藏状态栏、或改变window的背景的style属性。这些style属性不属于任何View对象。想探究这些仅应用作theme的style属性,参见R.attr中那些以window开头的属性。举个例子,windowNoTitle和windowBackground是仅当style作为theme应用于一个Activity或应用程序时才有效的style属性。参见下一节以获得关于将一个style应用作一个theme的信息。
注意: 不要忘记对每个< item>元素中的属性冠以android: 命名空间前缀。例如:< item name="android:inputType">.
为UI应用Style和Theme
有两种方式设置一个style:
· 对一个独立的View,添加style属性到你的布局XML中的View元素中。
· 或者,对一个Activity或应用程序 添加android:theme 属性到Android manifest 的< activity>或< application>元素中。
当你应用一个style到布局中一个单独的View上,由此style定义的属性会仅应用于那个View。如果一个style应用到一个ViewGroup上,那么子View元素并不会继承应用此style属性——仅有你直接应用了style的元素才会应用其属性。然而,你可以通过将其作为theme来应用的方式应用一个style到所有View元素上。
为将一个style作为一个theme来应用,你必须在Android manifest中将其应用到一个Activity或应用程序。当你这样做,此Activity或应用程序中的每个View都将应用其所支持的属性。例如,如果你应用前面示例中的CodeFont style到一个Activity,那么支持此文本style属性的所有View元素都将应用它们。任何View所不支持的属性将被忽略。如果一个View仅支持某些属性,那么它就只应用那些属性。
为View应用一个style
下面是如何在布局XML中为View设置style的方法:
< TextView
style="@style/CodeFont"
android:text="@string/hello" />
此时TextView将应用由名为CodeFont的style所定义的属性。(参见前面定义Styles中的示例。)
注意: style属性不使用android: 命名空间前缀。
为Activity或应用程序应用一个theme
为对你的应用程序中所有activity设置一个theme,请打开AndroidManifest.xml文件并编辑< application>标签,使之包含android:theme属性和style名称。例如:
< application android:theme="@style/CustomTheme">
If you want a theme applied to just one Activity in your application, then add the android:theme attribute to the < activity> tag instead.
如果你希望theme仅仅应用到你的应用程序中的某个Activity上,那么就将android:theme属性添加到< activity>标签中。
正像Android提供的其他内建资源一样,有许多你可以使用的预定义theme ,而不用自己编写它们。例如,你可以使用Dialog theme使你的Activity变得像一个对话框:
< activity android:theme="@android:style/Theme.Dialog">
或者你想让背景变成透明的,那就使用透明主题:
< activity android:theme="@android:style/Theme.Translucent">
如果你想使用一个theme,但也想调整它,那么你可以将其作为你的自定义theme的parent。例如,你可以修改传统的对话框theme来使用你自己的背景图像:
< style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
< item name="android:windowBackground">@drawable/custom_dialog_background< /item>
< /style>
然后在Android Manifest中使用CustomDialogTheme代替Theme.Dialog:
< activity android:theme="@style/CustomDialogTheme">
使用平台Style和Theme
Android平台提供了大量的style和theme供你在你的应用程序中使用。你可以在R.style类中找到所有可用的style。要使用这些style,用句号替换style名称中的下划线。例如,你可以通过"@android:style/Theme.NoTitleBar"应用Theme_NoTitleBar theme。
然而,R.style没有好的文档,没有透彻叙述这些style,所以查看这些style和theme的实际源代码将使你更好理解每个style属性提供了什么功能。为更好参考Android的style和theme,参见下列源代码:
· Android Styles (styles.xml)
更多精彩
赞助商链接