J'utilise actionbarsherlock. Le morceau de code ci-dessous est chargé de changer son arrière-plan en un arrière-plan personnalisé.
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="background">@drawable/actionbar_bg</item>
<item name="android:background">@drawable/actionbar_bg</item>
<...>
</style>
<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
<..>
</style>
Et cela fonctionne pour actionbarsherlock (sur les versions ci-dessous en nid d'abeille). Mais dans ICS, j'ai une ombre sous la barre d'action que je ne veux pas. Quel est l'élément de style pour le faire disparaître?
getSupportActionBar().setElevation(0);
ne fonctionne pas. Vous avez donc mis<item name="android:windowContentOverlay">@null</item>
votre thème d'application. J'ai eu le même problème. Maintenant, je les ai tous les deux. setElevation et ajout de l'élément windowContentOverlay dans le thème de l'application. setElevation fonctionne pour Android 5.0 et plus tandis que l'autre fonctionne pour pré-sucette. À votre santé!Pour Android 5.0, si vous souhaitez le définir directement dans un style, utilisez:
et pour l'utilisation de la compatibilité de la bibliothèque de support:
Exemple de style pour un thème lumineux AppCompat:
Ensuite, appliquez ce style ActionBar personnalisé à votre thème d'application:
Pour la version antérieure à Android 5.0, ajoutez-la également à votre thème d'application:
la source
windowContentOverlay
au thème de la barre d'action, pas au thème de l'application.android:elevation
pour les appareils Lollipop). Je n'arrive pas à le faire, en utilisant cette approche. Je pense que ce serait assez simple. Mettez une valeur non nulle pour les attributs d'élévation et c'est tout.android:windowContentOverlay
API pré lollipop? Je ne peux pas compiler si mon minSDK est pré-sucette mais la cible est 21?<style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
sansstyle/
enparent
attribut.Sur Android 5.0, cela a changé, vous devez appeler setElevation (0) sur votre barre d'action. Notez que si vous utilisez la bibliothèque de support, vous devez l'appeler ainsi:
Il n'est pas affecté par l'élément de style windowContentOverlay, donc aucune modification des styles n'est requise
la source
ajouter
app:elevation="0dp"
dans AppBarLayout pour masquer l'ombre dans la barre d'applicationsla source
Si vous travaillez avec ActionBarSherlock
Dans votre thème, ajoutez ceci:
la source
Vous devez définir
app:elevation="0dp"
dans leandroid.support.design.widget.AppBarLayout
puis cela fonctionne.la source
mais non
travaillé pour moi sur android L
la source
J'ai ce même problème et j'ai réussi à résoudre ce problème. Tout ce que vous avez à faire est simplement de changer l'élévation à 0 en virgule flottante dans l'activité dans laquelle vous souhaitez supprimer l'élévation.
Si vous voulez le changer dans une activité appelée
MyActivity.java
, vous devez donc obtenir leActionBar
premier.Importez d'abord la
ActionBar
classeaprès l'importation, vous devez initialiser une variable de la barre d'action et définir son élévation à 0.
la source
Pour les développeurs Xamarin, veuillez utiliser:
SupportActionBar.Elevation = 0;
pourAppCompatActivity
ouActionBar.Elevation = 0;
pour les activités non compatiblesla source
Solution pour Kotlin (Android 3.3, Kotlin 1.3.20)
la source
Essayez ceci, cela m'a aidé sans changer de thème. Mettez votre AppBarLayout dans n'importe quelle mise en page. J'espère que cela vous aidera
la source
Pour ceux qui travaillent sur des fragments et il a disparu après la définition
toolbar.getBackground().setAlpha(0);
ou toute disparition, je pense que vous devez amener votre AppBarLayout au dernier du xml, donc son Fragment puis AppBarLayout puis relativelayout / constraint / linear quelle que soit l'utilisation que vous utilisez.la source
Ajoutez ceci
toolbar.getBackground().setAlpha(0);
à l'intérieur de la méthode OnCreate. Ajoutez ceci:android:elevation="0dp" android:background="@android:color/transparent
à votre fichier xml de barre d'outils.la source