2015-07-24 4 views
3

Я разрабатываю приложение для 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> 

ответ

2

Я решил эту проблему, используя это в моем 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); 
    } 
Смежные вопросы