如何使用android:Theme.Material和Toolbar在一起?

时间:2016-03-01 13:16:52

标签: android android-actionbar material-design android-toolbar appcompat-v7-r22.1

我正在创建一个Android应用程序,我正在使用Material Design组件。我使用Material设计主题(android:Theme.Material),通过 android:Theme.Material 扩展我的风格。 / p>

<style name="MyMaterialTheme.Base" parent="android:Theme.Material.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:navigationBarColor">@color/navigationBarColor</item>
    <item name="android:displayOptions">disableHome</item>
</style>

现在,问题是我也想使用工具栏,但是当我遵循许多教程时,我需要将 Theme.AppCompat 作为我的父主题,如果我想使用工具栏。

我尝试使用Material Design Theme,但是把错误抛给了我

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

所以,我的问题是,我不能在工具栏中使用Material Design主题(因为我也使用Card Views,所以最好使用Material Design Theme)?

注意: - 我使用 AppCompact 主题整合了工具栏,但我只想使用Material Design主题。

3 个答案:

答案 0 :(得分:3)

将父级设置为&#34; @android:style / Theme.Material.Light.NoActionBar&#34;并在您的活动中使用AppCompatActivity。

答案 1 :(得分:1)

你正在

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

因为ActivityAppCompatActivity延伸并使用它,所以您的活动主题必须具有Theme.AppCompat或后代。

您可以在活动中使用Toolbar,而不是像AppCompatActivity那样Theme.AppCompat延伸。但是你仍然需要一个android:Theme.Material后代。

顺便说一句。为什么需要专门var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html");

答案 2 :(得分:0)

您需要更新清单中的主题。

编辑您的主题条目,如下所示:

android:theme="@style/Theme.AppCompat"