我知道这是可能的,所以如果我有一个设置,我可以在Holo.Light和Holo之间进行切换,但是,我似乎无法找到如何。所有帮助表示赞赏!如何从应用程序中更改为Holo Dark/Light主题?
5
A
回答
7
我认为你可以通过使用setTheme()
方法。只要确保在使用setContentView
之前调用它,否则它将无法工作。
例如:
if(userChoice ==1){
setTheme(android.R.style.Theme_Holo_Light);
else if(userChoice == 2){
setTheme(android.R.style.Theme_Holo);
}
主题的列表可以发现here
7
按照在回答所发布注释,如果你需要将默认霍洛主题之间切换,使用此:
if (mThemeId == R.style.AppTheme.Dark) {
mThemeId = android.R.style.Theme_Holo_Light;
} else {
mThemeId = android.R.style.Theme_Holo;
}
this.recreate();
使用您自己的Styles.XML
文件中定制的主题。例如,像这样:
<style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar" />
<style name="ActionBar.Light" parent="@style/ActionBar">
<item name="android:background">@color/actionbar_background_light</item>
</style>
<style name="ActionBar.Dark" parent="@style/ActionBar">
<item name="android:background">@color/actionbar_background_dark</item>
</style>
<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/ActionBar.Light</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="listDragShadowBackground">@android:color/background_light</item>
<item name="menuIconCamera">@drawable/ic_menu_camera_holo_light</item>
<item name="menuIconToggle">@drawable/ic_menu_toggle_holo_light</item>
<item name="menuIconShare">@drawable/ic_menu_share_holo_light</item>
</style>
<style name="AppTheme.Dark" parent="@android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/ActionBar.Dark</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="listDragShadowBackground">@android:color/background_dark</item>
<item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item>
<item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item>
<item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item>
</style>
在Activity
将此定义为一个全局变量:
private int mThemeId = -1;
和设置您的onCreate()方法是这样的:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState != null) {
if (savedInstanceState.getInt("theme", -1) != -1) {
mThemeId = savedInstanceState.getInt("theme");
this.setTheme(mThemeId);
}
mTitlesHidden = savedInstanceState.getBoolean("titlesHidden");
}
setContentView(R.layout.main);
}
而代码在两个主题之间切换:
if (mThemeId == R.style.AppTheme.Dark) {
mThemeId = R.style.AppTheme.Light;
} else {
mThemeId = R.style.AppTheme.Dark;
}
this.recreate();
注意:主题必须在您拨打setContentView()
之前设置
相关问题
- 1. 为Android应用程序设置Holo主题
- 2. 如何在主从应用程序更改的DetailView为iPad
- 3. 如何将应用程序默认主题更改为不同的应用程序主题?
- 4. 如何在SWT应用程序中更改主题
- 5. 如何在应用程序设置中更改主题
- 6. 如何在Android中更改应用程序的主题?
- 7. Holo主题为AppCompat库
- 8. 如何使用Holo主题更改Android中Button的背景颜色?
- 9. 如何从android中的另一个应用程序资源更改主题?
- 10. 如果在Windows Phone 7中更改了系统主题,如何更改应用程序的主题
- 11. ios - 如何更改应用程序颜色主题
- 12. 如何实现应用程序的更改主题?
- 13. 如何更改Android应用程序的主题?
- 14. 如何动态更改总ASP.NET应用程序的主题?
- 15. 如何根据应用程序的整体主题更改`app:popupTheme`?
- 16. 将主题更改为noTitle时应用程序崩溃
- 17. 如何将应用程序主题从普通的“空白活动”更改为“主/细节流程”
- 18. 如何将TabHost的主题从Holo.Light更改为Dark主题
- 19. Android:在java中更改应用程序主题
- 20. 在Android中更改主题清单崩溃应用程序
- 21. 在Android应用程序中更改主题颜色
- 22. 在整个iOS应用程序中更改颜色主题
- 23. 如何更改Grails应用程序中的默认主页?
- 24. 以编程方式更改应用程序主题(不在主要活动中)
- 25. android holo主题背景
- 26. DatePickerDialog与主题Holo Light?
- 27. Twitter引导Holo主题
- 28. 如何更改UWP应用程序中的应用程序标题
- 29. 如何更改rails应用程序中的默认实现主题颜色?
- 30. 如何将IIS应用程序池从x64更改为x86
为什么要定义自己的主题,而不仅仅是使用'android.R.style.DesiredThemeIdHere'? –
@AndreyVoitenkov:没有必要。我只是在使用自定义主题并在运行时更改它们的可能性。对不起,如果这是不必要的 – SSL