web-dev-qa-db-fra.com

Supprimer l'ombre sous la barre d'actions

J'utilise actionbarsherlock. Le morceau de code ci-dessous est responsable de la modification de 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 au-dessous de la barre d’action que je ne souhaite pas. Quel est l'élément de style pour le faire disparaître?

191
Michał K

Quel est l'élément de style pour le faire disparaître?

Afin de supprimer l'ombre, ajoutez ceci au thème de votre application:

<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
    <item name="Android:windowContentOverlay">@null</item>
</style>

UPDATE: Comme @ Quinny898 l'a déclaré, sur Android 5.0, la situation a changé: vous devez appeler setElevation(0) sur votre barre d'actions. Notez que si vous utilisez la bibliothèque de support, vous devez l’appeler comme suit:

getSupportActionBar().setElevation(0);
467
Tomer Mor

Pour Android 5.0, si vous souhaitez le définir directement dans un style, utilisez:

<item name="Android:elevation">0dp</item>

et pour l'utilisation de la compatibilité de la bibliothèque de support:

<item name="elevation">0dp</item>

Exemple de style pour un thème léger AppCompat:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="Android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

Appliquez ensuite ce style ActionBar personnalisé à votre thème d'application:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

Pour les versions antérieures à Android 5.0, ajoutez également cela au thème de votre application:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="Android:windowContentOverlay">@null</item>
124
Sloosh

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 comme suit:

getSupportActionBar().setElevation(0);

Il n'est pas affecté par l'élément de style windowContentOverlay. Aucun changement de style n'est donc nécessaire. 

102
Kieron

ajouter app:elevation="0dp" dans AppBarLayout pour masquer l'ombre dans la barre d'outils

44
Vijay Vavdiya

Si vous travaillez avec ActionBarSherlock

Dans votre thème, ajoutez ceci:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="Android:windowContentOverlay">@null</item>
    ....
</style>
39
Dmitry Zaytsev

Vous devez définir app: elevetor = "0dp" dans Android.support.design.widget.AppBarLayout, puis cela fonctionnera: D 

<Android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@Android:color/transparent"
        app:popupTheme="@style/AppTheme.PopupOverlay" >


    </Android.support.v7.widget.Toolbar>

</Android.support.design.widget.AppBarLayout>
22
Nguyên Phạm
app:elevation="0dp" 

mais non

Android:elevation="0dp"

a travaillé pour moi sur Android L

7
YTerle

J'ai le même problème et j'ai réussi à le résoudre. Tout ce que vous avez à faire est simplement de changer la valeur d'é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 d'abord obtenir la ActionBar.

Importez d'abord la classe ActionBar

import Android.support.v7.app.ActionBar;

après avoir importé, vous devez initialiser une variable de barre d’action et définir son altitude sur 0.

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }
2
shubham gupta

Pour les développeurs Xamarin, veuillez utiliser: SupportActionBar.Elevation = 0; pour AppCompatActivity ou ActionBar.Elevation = 0; pour les activités non compatibles.

1
BYISHIMO Audace

Essayez ça m'a aidé sans changer de thème. Placez votre AppBarLayout dans n’importe quelle mise en page. Nous espérons que cela vous aidera.

<RelativeLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">
<Android.support.design.widget.AppBarLayout
    Android:id="@+id/app_bar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:fitsSystemWindows="false"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        Android:layout_height="?attr/actionBarSize"
       Android:background="@color/white">
        <ImageView
            Android:src="@drawable/go_grocery_logo"
            Android:layout_width="108dp"
            Android:layout_height="32dp" />
    </Android.support.v7.widget.Toolbar>


</Android.support.design.widget.AppBarLayout>
</RelativeLayout>
1
Rahul

Pour ceux qui travaillent sur des fragments et qui disparaissent après la définition de toolbar.getBackground().setAlpha(0); ou de toute disparition, je pense que vous devez amener votre AppBarLayout à la dernière position dans le fichier xml.

0
Bowie Chang

Solution pour Kotlin (Android 3.3, Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}
0
zeeshan