我知道有可能这样做,如果我有一个设置我可以在Holo.Light和Holo之间改变,但是,我似乎无法找到如何.所有帮助表示赞赏!
我认为你可以通过使用该setTheme()方法来实现.只是确保在使用之前调用它setContentView,否则它将无效.
例如:
if(userChoice ==1){
setTheme(android.R.style.Theme_Holo_Light);
else if(userChoice == 2){
setTheme(android.R.style.Theme_Holo);
}
Run Code Online (Sandbox Code Playgroud)
可以在此处找到主题列表
根据发布的答案评论,如果您需要在默认的Holo主题之间切换,请使用:
if (mThemeId == R.style.AppTheme.Dark) {
mThemeId = android.R.style.Theme_Holo_Light;
} else {
mThemeId = android.R.style.Theme_Holo;
}
this.recreate();
Run Code Online (Sandbox Code Playgroud)
从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>
Run Code Online (Sandbox Code Playgroud)
在以下内容中将其定义为全局变量Activity:
private int mThemeId = -1;
Run Code Online (Sandbox Code Playgroud)
并设置你的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);
}
Run Code Online (Sandbox Code Playgroud)
以及在两个主题之间切换的代码:
if (mThemeId == R.style.AppTheme.Dark) {
mThemeId = R.style.AppTheme.Light;
} else {
mThemeId = R.style.AppTheme.Dark;
}
this.recreate();
Run Code Online (Sandbox Code Playgroud)
注意:必须在致电之前设置主题 setContentView()
| 归档时间: |
|
| 查看次数: |
17402 次 |
| 最近记录: |