2015-03-20 10 views
19

Ho implementato il material design nella mia app e funziona perfettamente su < Android 5 ma quando provo a eseguire su Android 5.0 e versioni successive ottengo quanto segue nel mio logcat.Blocco 5.1 - Il colore primario di TaskDescription deve essere opaco

 FATAL EXCEPTION main 
Process com.test.test, PID 3195 
java.lang.RuntimeException Unable to start activity ComponentInfo{com.test.test/com.test.test.MainActivity} java.lang.RuntimeException A TaskDescription's primary color should be opaque 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2298) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java1278) 
    at android.os.Handler.dispatchMessage(Handler.java102) 
    at android.os.Looper.loop(Looper.java135) 
    at android.app.ActivityThread.main(ActivityThread.java5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java694) 
Caused by java.lang.RuntimeException A TaskDescription's primary color should be opaque 
    at android.app.ActivityManager$TaskDescription.<init>(ActivityManager.java536) 
    at android.app.Activity.onApplyThemeResource(Activity.java3677) 
    at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java140) 
    at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java85) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java2244) 
    ... 10 more 

Ed ecco la mia stili:

<resources> 

    <!-- 
     Base application theme, dependent on API level. This theme is replaced 
     by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 


    --> 


    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 

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

     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 

     <item name="colorPrimaryDark">#4DFF9800</item> 
     <item name="colorPrimary">#4D607D8B</item> 
    </style> 

</resources> 

Se qualcuno mi potrebbe dare qualche indicazione che sarebbe fantastico, grazie.

risposta

54

Non è possibile utilizzare alfa nel colore primario. Il colore primario deve essere opaco.

Cambio:

<item name="colorPrimaryDark">#4DFF9800</item> 
<item name="colorPrimary">#4D607D8B</item> 

Per

<item name="colorPrimaryDark">#FF9800</item> 
<item name="colorPrimary">#607D8B</item> 

per api 21 in res/values-v21/style.xml file di

+0

non funziona questa soluzione. ho testato Android 6.0 –

+0

@SathishKumarJ Potresti creare l'essenza con il tuo codice? –

+0

controlla la mia domanda qui https://stackoverflow.com/questions/41298162/a-taskdescriptions-primary-color-should-be-opaque-android-6-0 –

1

@Konrad Krakowiak è giusto.
È possibile visualizzare il codice sorgente di android.app.ActivityManager # TaskDescription.

/** 
    * Creates the TaskDescription to the specified values. 
    * 
    * @param label A label and description of the current state of this task. 
    * @param icon An icon that represents the current state of this task. 
    * @param colorPrimary A color to override the theme's primary color. This color must be opaque. 
    */ 
    public TaskDescription(String label, Bitmap icon, int colorPrimary) { 
     if ((colorPrimary != 0) && (Color.alpha(colorPrimary) != 255)) { 
     throw new RuntimeException("A TaskDescription's primary color should be opaque"); 
     } 

     mLabel = label; 
     mIcon = icon; 
     mColorPrimary = colorPrimary; 
    } 
0

soluzione semplice al problema è quello di rimuovere l'opaca applicata al colore primario in colors.xml

Quando opaca viene applicata al colore primario l'aspetto codice di colore come questo "# aca688ff", dove deve essere ex: "# F50057" (codice alfanumerico di 6 lettere senza opaco).

Spero che la soluzione di cui sopra ti aiuti a risolvere il problema.

+0

non dimenticare di fare clic su "freccia su" se è utile. :) –

Problemi correlati