如何正确使用Material主题?

时间:2016-01-06 16:50:53

标签: android android-studio material-design android-support-library android-appcompat

我正在使用WHERE s.Name IN (@StateDivisionID) AND D.FinYearEnd <> -1 开发一款应用。我不希望支持21岁以下的旧API。

minSdkVersion=21&gt; Project structure,我仍然可以看到附加的Dependecies支持库。这背后的原因是什么?

v7主题应用于Material设备的正确方法是什么,因为我因API 21的膨胀而继续收到错误,或者它告诉我使用Coordinator layout中的主题而不是Theme.AppCompat

(某些属性因严重性而跳过)

的Manifest.xml

android:Theme.Material.Light.DarkActionBar

值\ styles.xml

<application
    android:theme="@android:style/Theme.Material.Light.DarkActionBar">
    <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Material.Light.DarkActionBar">
    </activity>
</application>

V21 \ styles.xml

<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

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

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

的build.gradle

<resources>
<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar">
   <!-- item tags here -->
</style>
</resources>

现在,我在这里得到2个例外: 1. compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.app.karti.themetestv3" minSdkVersion 21 targetSdkVersion 23 versionCode 1 versionName "1.0" } 2. Error inflating class android.support.design.widget.CoordinatorLayout

如果有人可以提供帮助,我会很高兴。感谢。

PS:MainActivity类扩展You need to use a Theme.AppCompat theme (or descendant) with the design library.而不是Activity

1 个答案:

答案 0 :(得分:3)

  

这背后的原因是什么?

因为您自己添加了它,或者您使用了添加它的模板。例如,IDE随附的Android Studio新项目和新活动向导模板均使用appcompat-v7

  

将材质主题应用于API 21设备的正确方法是什么,因为我因协调器布局的膨胀而继续出现错误,或者它告诉我使用Theme.AppCompat中的主题而不是android:Theme.Material.Light.DarkActionBar

您不能使用CoordinatorLayout或Android设计支持库中的任何内容,除非您还使用appcompat-v7以及所有这些(例如,使用AppCompatActivity更改主题)。< / p>

所以,你的选择是:

  1. 避免使用appcompat-v7,单独留下您的活动和内容,但不要使用CoordinatorLayout

  2. 使用appcompat-v7

  3. 避免使用appcompat-v7,将您的活动和内容单独留下,并尝试跨越CoordinatorLayout以及您要在Android设计支持库中使用的任何其他内容,以便不使用{{ 1}}

  4. 我还没有尝试过移植appcompat-v7。交叉移植CoordinatorLayout进展顺利。交叉移植ActionBarDrawerToggle看起来很痛苦,因此我使用的开源代码与Snackbar无关。