web-dev-qa-db-ja.com

styles.xml androidでAndroid:Theme.Material(Materialテーマ)を使用する方法は?

私のアプリケーションでは、Android:Theme.Materialフォルダのスタイルにvalues-21を親テーマとして実装しようとしています。

 <!-- res/values-21/styles.xml -->
 <resources>
 <!-- your theme inherits from the material theme -->
 <style name="AppTheme" parent="Android:Theme.Material">
    <!-- theme customizations -->
      <item name="Android:colorPrimary">@color/primary</item>
    <item name="Android:textColorPrimary">@color/text_primary</item>
    <!-- darker variant for the status bar and contextual app bars -->
    <item name="Android:colorPrimaryDark">@color/primary_dark</item>
    <!-- theme UI controls like checkboxes and text fields -->
    <item name="Android:colorAccent">@color/accent</item>
    <item name="Android:navigationBarColor">@color/primary_dark</item>
   </style>
 </resources>

アプリを実行した後、私はerror以下になっています

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

値フォルダー内。私は以下のスタイルを持っています

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>

ただし、Theme.AppCompat.Lightに同じvalues-21 folderを追加すると、正常に機能します。しかし、actionbar colorは変更されていません。

なぜvalues-21 folderでマテリアルデザインテーマを使用できないのですか?この問題を解決するには?

(注:私のアプリケーションminsdk verison13であり、maxsdk version22です)

私のアクティビティはAppCompactActivityを拡張します

14
John

AppCompatActivityを使用している場合は、res/values/styles.xmlでスタイルのみを使用し、colorPrimary、colorPrimaryDarkに使用している名前空間を確認してください。

 <style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
 </style>
5

enter image description here

アプリのテーマはマニフェストファイルで定義されます。

<application
    Android:theme="@style/AppTheme">

このスタイルは/res/values/styles.xmlで定義されています。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.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>

AppCompatを使用すると、Android 5.0。の主要なマテリアルデザインテーマを以下に示します。

暗いテーマ

enter image description here

光のテーマ

enter image description here

ダークアクションバー付きのライトテーマ

enter image description here

参考文献

7
Suragch