2016-12-30 3 views
3

Zuerst habe ich zwei Stile erstellt, einer ist Wert und der andere ist Wert-21.Kann Android nicht verwenden: Theme.Material in AppCompatActivity

In Werte/styles.xml ist

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

In Werte-v21/styles.xml ist

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


Meine gradle Datei (app.gradle)

gradle pic1 gradle pic2


Seit der ActionBarActivity ist veraltet, so dass ich AppCompatActivity.

Wenn ich diese beiden Stilwerte gesetzt und erweitern AppCompatActivity in MainActivity, bekam ich die Ausnahme:

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

ich die zwei verschiedenen Änderungen und diese Ausnahme zeigt nie wieder:

  • Extend "android.app.Activity" anstelle von v7.AppCompatActivity.
  • Wechseln Sie in values-v21/styles.xml zu "Theme.AppCompat".


Sollte ich verlängern die "android.app.Activity", wenn ich das Design-Thema verwenden möchten?

Oder gibt es eine andere Möglichkeit, Material Design Theme zu verwenden?

Danke.

+0

Android L Theme.Meterial, wenn die Verwendung AppComatActivity können Sie einfach Verwenden Sie Theme.AppCompat – Fang

+0

Welche Situation wird "Android: Theme.Material" verwenden? – cmingmai

+0

minSdkVersion ist 21 – Fang

Antwort

0

Versuchen Sie folgendes:

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

Ersetzen Below Theme in Ihrem styles.xml Datei.

<!-- 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> 

Und Verwendung erstreckt AppCompatActivity in Ihrem MainActivity.

Und schließlich dieses Thema in Manifestfile verwenden.

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

Gradle Dateiabhängigkeiten.

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' 
     } 

Bearbeiten Sie mein Thema, wie Sie möchten. Hoffe, es hilft ...

+0

Bitte geben Sie Ihre Gradle-Datei auch –

+0

Also brauchen Sie nicht "android: Theme.Material" überhaupt zu verwenden? Verwenden Sie einfach Theme.AppCompat? – cmingmai

+0

Ja @CMinMai ... immer können wir verwenden, wie wir wollen .. –

0

Versuchen Sie diese Stil.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> 

Update Ihr Gradle Datei unter Code

hinzufügen aaptOption in Ihrem 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

Schreiben Sie das Thema in Ihre style.xml-Datei.

<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> 

und Schreib erstreckt AppCompatActivity in Ihrem `MainActivity

und in der Manifest.xml Datei-Tag-Anwendung schreiben, wie unten:

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

Also brauchen Sie nicht "android: Theme.Material" überhaupt? – cmingmai

+0

Ja es gibt keine Notwendigkeit, "android: Theme.Material" zu verwenden. Es wird automatisch behandelt. –

+0

Danke für die Hilfe :) – cmingmai

Verwandte Themen