如何在Android中更改应用程序的主题?

如何在Android中更改应用程序的主题?,android,android-xml,android-theme,Android,Android Xml,Android Theme,我正在开发一个android应用程序。 我想添加一个特性,使用户可以在运行时更改应用程序的主题 我尝试在我的主要活动中使用以下语句 setTheme(android.R.style.Theme_Black); 但是,它只是将对话框更改为带有白色文本的黑色背景 如何将所有组件的主题(包括动作栏和片段)更改为黑色?使用theme\u Holo而不是theme\u Black,请记住,如果希望所有内容都变为黑色,则需要创建自己的主题 对于全局运行时更改,有效的方法是扩展和设置主题(可能在中,因为该类

我正在开发一个android应用程序。 我想添加一个特性,使用户可以在运行时更改应用程序的主题

我尝试在我的主要活动中使用以下语句

setTheme(android.R.style.Theme_Black);
但是,它只是将对话框更改为带有白色文本的黑色背景


如何将所有组件的主题(包括动作栏和片段)更改为黑色?

使用
theme\u Holo
而不是
theme\u Black
,请记住,如果希望所有内容都变为黑色,则需要创建自己的主题

对于全局运行时更改,有效的方法是扩展和设置主题(可能在中,因为该类也有一个扩展
ContextWrapper
的方法)

确保在清单中声明应用程序类:

<application
        android:name="com.yourpackage.ApplicationClass" >
</application>


然而,由于扩展应用程序通常是不受欢迎的,我宁愿在每个
活动
的基础上设置主题,因为活动比
应用程序
对象更容易被破坏和重新创建。也许可以创建一个静态方法,从
共享参考
返回当前主题,我建议阅读开发者文档的样式和主题部分

您可以使用以下方法从清单中创建大量主题:

<activity android:theme="@style/android:Theme.Dark">