如何在android上选择当前主题

时间:2011-02-23 09:43:39

标签: android

我对android dev很新,想知道,我该如何选择手机的当前主题。我正在使用Galaxy Tab进行开发,当前主题是一个漂亮的白色主题(例如,如果我进入设置菜单)。但是sdk中的默认主题似乎是Android.Black。

我不想硬编码任何选择,让应用程序使用手机/标签上选择的任何一个...

1 个答案:

答案 0 :(得分:21)

我不确定你的问题到底是什么,所以我将分两部分回答:

如何让应用选择Android上的当前主题?

主题自动(默认情况下)设置为当前设备/用户选择的任何系统主题。如果未定义style或嵌套theme属性,则您的应用将设置为反映系统样式。例如,如果主题的默认字体颜色为#AFAFAF,则应用的默认字体颜色也将为#AFAFAF,除非样式或主题资源另有指定。

如果我不喜欢当前的主题,我该如何设置自己的主题?

你提到你喜欢Galaxy标签上漂亮的白色主题。你是对的,不同版本的android使用不同的系统主题,包括字体和背景。

要获取当前主题(以确定它是否是您想要的主题),只需使用getApplication().getTheme()即可。如果这是你想要的主题,你不必做任何事情。如果要应用逻辑并以编程方式设置主题,请使用getApplication().setTheme([theme])方法进行更改。

您还可以为各个活动和AndroidManifest.xml文件指定应用程序范围的主题和主题,如下所示:

//for themes defined in res/values/style.xml    
<application android:theme="@style/myApplicationTheme"> 
<activity android:theme="@style/myApplicationTheme"> 
//for system themes
<application android:theme="@android:style/Theme.Light">
<activity android:theme="@android:style/Theme.Light">

并且,与往常一样,对于单个视图元素。

如果您要实施特定的系统主题,请务必查看complete theme specifications。这些将列出所有系统主题以及每个主题的所有已定义样式元素,以便您可以使用所需主题或创建自己的变体。

如果您特别喜欢灯光系统主题,可以使用

为您的应用程序设置
<application android:theme="@android:style/Theme.Light">