0

J'essaie de définir la couleur de ma barre d'action sur transparente, de sorte qu'elle ait la même couleur que l'arrière-plan et se fondre avec l'arrière-plan dégradé.Définir ColorPrimary (couleur de la barre d'action) sur transparent provoque une exception

J'ai essayé de faire quelque chose comme ceci:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@android:color/transparent</item> 
</style> 

Quand je lance mon application, il lance, charge l'écran pendant une seconde (tous rendus correctement, la barre d'action est transparent), puis se bloque à l'exception suivante :

java.lang.IllegalArgumentException: background can not be translucent: #0 

Traçage à aucune classe pertinente de mon projet. Si je règle le paramètre sur une couleur unie, tout fonctionne correctement. Pouvez-vous m'aider avec le problème? Je n'ai pas trouvé de solution.

Merci.

+0

Utilisez-vous 'MediaRouter'? – adneal

+0

Pour le moulage? Oui. – user3184899

Répondre

1

Votre application ne plante pas en raison de la transparence de l'arrière-plan ActionBar, mais du fait que votre colorPrimary est transparent, en combinaison avec l'utilisation de la bibliothèque MediaRouter.

MediaRouterThemeHelper.getControllerColor et MediaRouterThemeHelper.getButtonTextColor à la fois faire des appels à ColorUtils.calculateContrast, qui est l'endroit où votre IllegalArgumentException vient.

ColorUtils.calculateContrast a besoin d'une couleur complètement opaque afin de calculer correctement le contraste, on se base uniquement sur la formula being used et MediaRouterThemeHelper utilise colorPrimary pour déterminer comment le thème de la couleur du texte du contrôleur MediaRouter et le bouton.

On dirait que vous utilisez un style NoActionBar, donc je suppose que vous utilisez un Toolbar et que la mise en background être votre colorPrimary. Au lieu de cela, vous pouvez simplement utiliser @android:color/transparent directement et changer votre colorPrimary pour quelque chose d'opaque.