Android Material Design与AppCompatActivity

16
为了支持API 19及以下版本,我让我的活动(activity)扩展(AppCompatActivity)。 我试图为v21设置以下父主题 parent="android:Theme.Material" 当我尝试运行我的应用程序时,它会抛出异常并告诉我要使用Activity而不是AppCompatActivity。
这是否意味着我必须创建新的活动(activity),这些活动(activity)扩展(Activity)以获取材料设计?还是有更好的方法?

2
要获取 Material Design,您需要扩展 Theme.AppCompat。 - Eenvincible
1
是的,我做了,请再读一遍。 - Robin Dijkhof
你不想直接扩展Theme.Material。 - Eenvincible
1
不确定为什么这个被踩了。其实这是一个好问题。@Eenvincible可能是对的,但是Google的教程使用Theme.Material。请参见http://developer.android.com/training/material/theme.html。 - stevebot
你可以直接使用Material,但必须有一个名为values-v21的文件夹。 - Eenvincible
2个回答

10

AppCompatActivity需要一个AppCompat主题。如果使用不同的主题,例如android:Theme.Material,则会出现以下问题:

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

只需在您的 styles.xml 文件中定义一个主题:

<style name="AppTheme" parent="Theme.AppCompat">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

通过使用AppCompat主题,您可以在API <21的设备上拥有Material设计。

android:Theme.Material只能与API >=21一起使用。


4
这是我设置主题文件themes.xml支持Material Design的方法:
<resources>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

</resources>

现在,在您的活动中,您可以像往常一样扩展AppCompatActivity,并获得所需的外观!祝你好运!


感谢您的回答。在阅读谷歌的教程http://developer.android.com/training/material/theme.html时,我自己也感到困惑。不确定是否有更好的谷歌教程提供向后兼容性的说明。 - stevebot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接