2016-12-30 7 views
3

Во-первых, я создал два стиля, один - значение, а другой - значение-21.Невозможно использовать android: Theme.Material в AppCompatActivity

В значениях/styles.xml является

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

В значениях-v21/styles.xml является

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


Мой Gradle файл (app.gradle)

gradle pic1 gradle pic2


С ActionBarActivity устарела, поэтому я использую AppCompatActivity.

Когда я устанавливаю эти два значения стиля и расширения AppCompatActivity в MainActivity, я получил исключение:

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

я два различных изменений и что исключение никогда не появляется снова:

  • Продлить «android.app.Activity» вместо v7.AppCompatActivity.
  • Изменить на "Theme.AppCompat" в значениях-v21/styles.xml.


Должен ли я продлить "android.app.Activity", если я хочу использовать тему оформления?

Или, есть ли другой способ использования темы дизайна материалов?

Спасибо.

+0

Android L можно использовать Theme.Meterial, если использовать AppComatActivity Just use Theme.AppCompat – Fang

+0

В какой ситуации будет использоваться «android: Theme.Material»? – cmingmai

+0

minSdkVersion is 21 – Fang

ответ

0

Попробуйте это:

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

Заменить Ниже Тема вашей styles.xml файла.

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

    <style name="MyMaterialTheme" parent="MyMaterialTheme.Base"> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap">true</item> 
    </style> 

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 
</resources> 

и использование расширяет AppCompatActivity в вашем MainActivity.

И, наконец, используйте эту тему в манифесте.

<application 
      android:allowBackup="true" 
      android:icon="@mipmap/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/MyMaterialTheme"> 
    </application> 

Gradle File dependencies.

dependencies 
     { 
     compile fileTree(dir: 'libs', include: ['*.jar']) compile 

'com.android.support:appcompat-v7:23.3.0' compile 

'com.android.support:recyclerview-v7:23.1.1' compile 

'com.android.support:cardview-v7:23.2.1' // For NavigationView Using Menu 

'compile 'com.android.support:design:23.3.0' // For Google Map compile 

'com.google.android.gms:play-services-maps:9.8.0' 
     } 

Редактировать мою тему, как вы хотите. Надеюсь, что это помогает ...

+0

, пожалуйста, укажите также файл с градиентом –

+0

. Так что вам не нужно использовать «android: Theme.Material» вообще? Просто используйте Theme.AppCompat? – cmingmai

+0

Да @CMinMai ... всегда мы можем использовать, как хотим .. –

0

Попробуйте стиль.XML

<resources> 

    <!-- 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> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

    <style name="MyRadioButton" parent="Theme.AppCompat.Light"> 
     <item name="colorControlNormal">@color/colorRadioon</item> 
     <item name="colorControlActivated">@color/colorRadioof</item> 
    </style> 

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

</resources> 

style.xml (v 21)

<resources>> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="android:statusBarColor">@android:color/transparent</item> 
    </style> 
</resources> 

обновление Ваш Gradle файла с помощью кода ниже

добавить aaptOption в вашем Gradle

aaptOptions { 
     additionalParameters "--no-version-vectors" 
    } 

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 


    defaultConfig { 
     applicationId "com.jmtechnologies.askuscash" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    dexOptions { 
     javaMaxHeapSize "2g" 
    } 

    // important to run code on kitkat 

    aaptOptions { 
     additionalParameters "--no-version-vectors" 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    // multidex 
    compile 'com.android.support:multidex:1.0.0' 


    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:recyclerview-v7:25.1.0' 



} 
2

Напишите приведенную ниже тему в файле style.xml.

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">any_color_code</item> 
    <item name="colorPrimaryDark">any_color_codek</item> 
    <item name="colorAccent">any_color_code</item> 
</style> 

и запись продолжается AppCompatActivity в вашем `MainActivity

и в Manifest.xml файле написать тег приложения, как показано ниже:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppBaseTheme"> 
</application> 
+0

Так что вам не нужно использовать «android: Theme.Material» вообще? – cmingmai

+0

Да нет необходимости использовать «android: Theme.Material». Он будет обрабатываться автоматически. –

+0

Спасибо за помощь :) – cmingmai