J'essaye AppCompat sur Marshmallow. Et je veux avoir une barre d'état transparente mais elle devient blanche. J'ai essayé quelques solutions mais elles n'ont pas fonctionné pour moi (la barre d'état transparente ne fonctionne pas avec windowTranslucentNavigation = "false" , Lollipop: dessiner derrière statusBar avec sa couleur définie sur transparent ). Voici le code associé.
Mon styles.xml
<style name="Bacon" parent="Theme.Bacon"/>
<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/background_material_light</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon"/>
v21
<style name="Bacon" parent="Theme.Bacon">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Activité
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</FrameLayout>
Fragment
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="192dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginBottom="32dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:statusBarScrim="@color/black_trans80">
<ImageView
android:id="@+id/photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/photo"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
android
android-support-library
android-appcompat
androiddesignsupport
android-6.0-marshmallow
pt2121
la source
la source
Réponses:
J'ai trouvé la réponse dans ce lien: La couleur de la barre d'état ne change pas avec la disposition relative comme élément racine
Il s'avère donc que nous devons supprimer le
dans styles.xml (v21). Et cela fonctionne très bien pour moi.
la source
(Un peu tard à la fête mais ça pourrait aider quelqu'un)
J'ai eu exactement le même problème. D'une manière ou d'une autre, certaines activités étaient normales tandis que les nouvelles que j'ai créées affichaient une barre d'état blanche au lieu de la
colorPrimaryDark
valeur.Après avoir essayé plusieurs astuces, j'ai remarqué que les activités de travail normal utilisaient toutes
CoordinatorLayout
comme racine de la mise en page, tandis que pour les autres, je l'avais remplacée par des mises en page régulières car je n'avais pas besoin des fonctionnalités (animation, etc.) fournies parCoordinatorLayout
.La solution consiste donc à créer
CoordinatorLayout
la disposition racine, puis à y ajouter votre ancienne racine de disposition. Voici un exemple:VEUILLEZ NOTER que sans
android:fitsSystemWindows="true"
cette solution ne fonctionne pas pour moi.Testé sur sucette et guimauve
la source
android:fitsSystemWindows="true"
àCoordinatorLayout
Android 8.CoordinatorLayout
quand j'ai rencontré le même problème et que la propriété spécifique qui a résolu cela pour moi étaitandroid:fitsSystemWindows="true"
android:fitsSystemWindows="true"
n'a pas fonctionné pour moi. Ce qui a résolu mon problème est d'utiliser un thème qui n'est pasAppTheme.NoActionBar
sur l'activité avec unCoordinatorLayout
. Je ne sais pas pourquoi cela a résolu le problème.CoordinatorLayout
ouandroid:fitsSystemWindows="true"
ni l'un ni l' autre ne fonctionne pour moi.la source
Vous devez ajouter cette propriété à votre style pour voir le contenu
la source
Ajoutez ceci dans votre style.xml
et ceci dans votre onCreate ();
la source
Après avoir essayé sans succès tout ce qui précède, j'ai trouvé que la définition explicite du thème résolvait le problème.
Cela doit précéder le super.OnCreate () dans votre activité.
la source
Mettez simplement cet élément dans votre v21 \ styles.xml:
vrai
Ça devrait ressembler à ça :
la source
false
valeurs des 2 derniers éléments. Bizarre, mais merci.J'ai fait face au même problème. Ce que j'ai fait, c'est que dans le fichier "v21 / styles.xml" a changé la valeur true:
à:
la source
Vous verrez cette ligne de code dans values / styles / styles.xml (v21). Retirez-le et cela résout le problème
Lien vers cette réponse
la source
J'ai résolu mon problème en modifiant la disposition de mon activité de FrameLayout en RelativeLayout. Merci à tous ceux qui ont essayé de vous aider!
Essayez le visualiseur de hiérarchie ou ViewInspector . Ces outils peuvent vous aider.
la source
Supprimez simplement la balise suivante du style v21 @android: couleur / transparent
Cela fonctionne pour moi.
la source
Meilleure approche
Vérifiez votre fichier style.xml où se trouve votre thème NoActionBar. Assurez-vous que son parent est Theme.AppCompat.NoActionBar et personnalisez-le également en ajoutant votre jeu de couleurs. Enfin, définissez vos thèmes dans le manifeste selon vos besoins.
Voici un exemple de mon fichier styles.xml (ActionBar + NoActionBar).
la source
Pour moi, cela a fonctionné en procédant comme suit:
.NoActionBar
android.support.design.widget.AppBarLayout
android.support.design.widget.CoordinatorLayout
comme mise en page parent.C'est essentiellement la troisième étape qui dessine la barre d'état dans le
colorPrimaryDark
cas contraire, elle n'est pas dessinée si vous utilisez leNoActionBar
thème. La deuxième étape donnera à votre barre d'outils cette superposition .la source
Pour les styles v23
Pour les styles v21
la source
[
Développez le répertoire res -> values -> styles à partir du panneau Projet.
Ouvrez styles.xml (v21)
UTILISEZ N'IMPORTE QUELLE MANIÈRE CI-DESSOUS
android:windowDrawsSystemBarBackgrounds
propriété.android:statusBarColor
propriété.android:statusBarColor
ligne de propriété.la source
Si votre v21 / styles.xml contient
Ensuite, supprimez ou commentez sous la ligne ou changez la couleur de la barre d'état,
Son fonctionne bien. J'espère que c'est utile. Merci.
la source
J'ai trouvé une solution pour cela -
ajoutez ceci à votre style et cela fonctionnera pour l'api 21 ou supérieur.
la source
Je ne sais pas s'il est tard mais j'espère que cela aide quelqu'un. * Créez une fausse vue avec un arrière-plan transparent qui correspond à la mise en page et créez une mise en page de coordination en tant qu'élément de mise en page racine.
la source
Cela a du travail pour moi
la source
Je suppose que cela est causé par votre
android:windowBackground
. Une@color/background_material_light
référence au blanc?la source
<item name="android:statusBarColor">@android:color/transparent</item>
par<item name="android:statusBarColor">@null</item>
.Vérifiez que cette barre d'outils devient blanche - AppBar n'est pas dessinée après avoir été défilée hors de l'écran
https://code.google.com/p/android/issues/detail?id=178037#c19
J'utilise les bibliothèques 23.0.0. et le bogue persiste.
La solution de contournement consiste à ajouter une vue qui ne prend presque pas d'espace et peut être invisible. Voir la structure ci-dessous.
Ces questions sur Stackoverflow.com font également référence à ce bogue: la barre d'outils CoordinatorLayout invisible à l'entrée jusqu'à pleine hauteur AppBarLayout - Disposition parfois invisible une fois qu'elle entre dans la vue (même si elle n'est pas entrée)
la source
Si vous utilisez RelativeLayout / CoordinatorLayout, c'est la solution qui a fonctionné pour moi:
Vous devez utiliser
N'oubliez pas d'utiliser CoordinatorLayout au lieu de RelativeLayout (les performances sont meilleures et fonctionnent parfaitement avec AppBarLayout)
Voici comment votre fragment doit commencer
Bon codage!
la source
ajouter l'élément 'windowTranslucentStatus' dans les styles
la source
Ajoutez ceci dans votre style.xml
Remarque: la coloration de la barre d'état n'est pas prise en charge en dessous du niveau d'API 21.
la source
Ajoutez cette ligne 2 dans le fichier java ci-dessous
la source