如何在android操作栏中添加夜间模式和白天模式



我正在开发一个android应用程序。我想在应用程序中添加夜间模式和白天模式。我想让它在应用程序的操作栏中可见。

目前我的style.xml文件是

   <style name="Theme.FullScreen" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen"></style>
<style name="PreferencesTheme" parent="android:Theme.Light">
    <item name="android:background">#FFEAEAEA</item>
</style>
<style name="PreferencesTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@drawable/ic_icon_settings</item>
</style>

我通过在我的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>

切换模式的菜单

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.toggleTheme:
        if (mThemeId == R.style.AppTheme_Dark) {
            mThemeId = R.style.AppTheme_Light;
        } else {
            mThemeId = R.style.AppTheme_Dark;
        }
        this.recreate();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

在模式之间切换所需的全局变量:

    private int mThemeId = -1;

保存最后选择的模式,在onCreate()中:

    if(savedInstanceState != null && savedInstanceState.getInt("theme", -1) != -1) {
        mThemeId = savedInstanceState.getInt("theme");
        this.setTheme(mThemeId);
    }

最新更新