在theme.xml中使用样式的样式工具栏

时间:2015-06-15 13:13:29

标签: android toolbar android-appcompat

我正在构建一个在运行时加载特定主题的活动:

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

    ...
}

使用Light主题,工具栏为白色,内容为白色背景。使用Dark主题,工具栏为深灰色,内容也在白色背景上。 (与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属性?

非常感谢, 皮埃尔。

1 个答案:

答案 0 :(得分:0)

请参阅此question

LordRaydenMK 的回答

在这里,您还可以在使用Appcompat Activity时使用工具栏的主题属性。

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

希望它会有所帮助。