我是否还需要为V21样式使用Theme.AppCompat主题(或后代)?

时间:2015-01-05 13:37:42

标签: android material-design

使用Material Design主题时,我的values-v21文件夹是否应包含对Theme.Appcompat的引用? 我的API min为9,目标API为21。

我有以下内容: 的AndroidManifest.xml

   <application
    ...
    android:theme="@style/AppTheme">

值\ styles.xml

<resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat.NoActionBar">    
    </style>
    <style name="AppTheme" parent="AppBaseTheme">
    </style>
</resources>

值-V21 \ styles.xml

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Material.Light">
    </style>
</resources>

但是我得到了

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

我已使用Activity

扩展了我的ActionBarActivity

我主要关注以下视频http://youtu.be/h57QpXp2TRg

2 个答案:

答案 0 :(得分:2)

它在我关注的视频中工作,因为教师没有使用棒棒糖模拟器,而是使用较低版本。该系列的下一个视频解释了这个问题。 http://youtu.be/hrlGVU8z7zc

正确的定义应该是:

值-V21 \ styles.xml

<resources>
    <style name="AppTheme" parent="AppBaseTheme">
    </style>
</resources>

值\ styles.xml

<resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat">    
    </style>
    <style name="AppTheme" parent="AppBaseTheme">
    </style>
</resources>

答案 1 :(得分:0)

您可以使用此代码分隔API版本

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
    // Do something for Lollipop and above versions
} else{
    // do something for phones running an SDK before Lollipop
}

如果您在没有Appcompat的情况下为API 21创建单独的布局,则不需要引用。

否则您仍将使用需要使用Theme.Appcompat

的Appcompat