2015-06-15 4 views
0

Я здание деятельности, которая загружает определенную тему во время выполнения:Styling панель со стилями в theme.xml

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    if (shouldLoadLight()) { 
     setTheme(R.style.ThemeLight); 
    } else { 
     setTheme(R.style.ThemeDark); 
    } 
    super.onCreate(savedInstanceState); 

    ... 
} 

С легкой темой, панель инструменты белые и содержание на белом фоне. С темной темой панель инструментов темно-серая, а контент также находится на белом фоне. (например, с темами Light.DarkActionBar)

Мне нужно применить пользовательскую тему к панели инструментов, чтобы иметь хорошие цвета с обратной связью, но, поскольку тема активности динамична, я не могу ее установить в своем макете XML ,

Вот то, что я пытался до сих пор:

theme.xml

<resources> 
    <!-- LIGHT --> 
    <style name="ThemeLight" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- here, i want grey ripple, it's provided by the light theme already --> 
    </style> 

    <!-- DARK --> 
    <style name="ThemeDark" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- here, i want white ripple, like with the Dark.ActionBar theme --> 
     <item name="toolbarStyle">@style/ToolbarDark</item> <!-- not working --> 
     <item name="actionbarTheme">@style/ToolbarDark</item> <!-- not working --> 
    </style> 

    <style name="ToolbarDark" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
     <!-- here, i want white ripple, like with the Dark.ActionBar theme --> 
    </style> 
</resources> 

Любой идея о том, как достичь такой панель инструментов стиля от theme.xml, а не из android:theme= атрибута XML в форматах?

спасибо, Pierre.

+0

Попробуйте применить стили к панели инструментов. как Light.DarkActionBar – Harry

+0

Непосредственно в XML-формате макета? Я не могу этого сделать, потому что глобальная тема динамична, и поэтому, когда-нибудь я хочу Light.DarkActionBar на Панели инструментов, некоторое время я просто хочу Свет ...: s – pdegand59

ответ

0

См Ответ LordRaydenMK в этом question

Здесь вы также можете иметь атрибут темы для панели инструментов, используя AppCompat активность.

<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 

Надеюсь, это поможет.

+0

Я, хотя 'theme' attr должен быть устаревшим? У меня были некоторые проблемы при использовании 'theme' attr и AppCompatDialog с переопределенной темой. http://developer.android.com/reference/android/support/v7/appcompat/R.attr.html#theme – pdegand59

Смежные вопросы