web-dev-qa-db-fra.com

comment supprimer l'ombre sous la barre d'action avec AppCompat.Light.NoActionBar?

J'ai essayé de supprimer l'ombre sous la barre d'outils avec Theme.AppCompat.Light.NoActionBar, en utilisant toutes les recommandations des personnes qui y ont déjà répondu, mais personne ne travaillait. j'ai essayé 

<item name="Android:windowContentOverlay">@null</item>    

et

<item name="Android:windowContentOverlay">@drawable/solid_line</item> ....

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"android:shape="rectangle">
<solid Android:color="@color/accueil_color" />
<size Android:height="15dp" />
</shape>

et avec ça,

Android:elevation="0dp"

l'ombre va du haut de l'écran mais ne disparaît pas.

Avez-vous une idée pour supprimer totalement cette ligne d'ombre?

39
user3607438

Je ne suis pas un expert mais je rencontre le même problème il y a quelques heures à peine. L'idée est donc qu'avec AppCompat, nous devons gérer les attributs de la bibliothèque plutôt que les attributs Android. En d'autres termes, au lieu d'Android: élévation, essayez app: élévation:

<Android.support.design.widget.AppBarLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/appbar"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    Android:fitsSystemWindows="true"
    app:elevation="0dp">

    <Android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

</Android.support.design.widget.AppBarLayout>

MODIFIER :

Je viens d'essayer une autre option sans AppBarLayout. Cela fonctionne parfaitement pour moi, l'ombre a complètement disparu. Donc, je soupçonne que le problème est dans votre autre vue. Je ne pense pas que ce soit votre ToolBar laisse tomber l'ombre.

<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:minHeight="?attr/actionBarSize"
    app:elevation="0dp" />
79
DmitryO.

utiliser app:elevation="0dp" instead of Android:elevation

71
Abdul Rehman

J'ai eu le même problème. L'application de app:elevation="0dp" sur Android.support.design.widget.AppBarLayout résout le problème

45
Supritha P

Ajoutez app:elevation="0dp" dans AppBarLayout et l'ombre sera masquée.

17
Vijay Vavdiya

J'ai eu le même problème. 

Si votre barre d'outils se trouve à l'intérieur de Android.support.design.widget.AppBarLayout Ajouter app: elevation = "0dp" sur Android.support.design.widget.AppBarLayout règlera votre problème.

Sinon, ajoutez app:elevation="0dp" sur Toolbar.

<Android.support.design.widget.AppBarLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/appbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
Android:fitsSystemWindows="true"
app:elevation="0dp">

<Android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

J'espère que ça aide :)

8
Nihas Nizar

Il suffit d'utiliser après le super.onCreate(savedInstanceState);

if(getSupportActionBar() != null)
{
   getSupportActionBar().setElevation(0);
}
6
Bède

@DmitryO Hum mon xml est comme ça, je n'ai pas Android.support.design.widget.AppBarLayout, juste le widget de barre d'outils,

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:fab="http://schemas.Android.com/apk/res-auto"
    xmlns:materialdesign="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@color/white"
    Android:theme="@style/AppThemeAccueil">

    <View xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="@dimen/statusBarHeight"
        Android:background="@color/accueil_colorDark"
        Android:elevation="@dimen/statusBarElevation"/>

    <Android.support.v7.widget.Toolbar
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:popupTheme="@style/AppThemeAccueilToolbar"
        Android:theme="@style/AppThemeAccueilToolbar"
        Android:id="@+id/toolbarAccueil"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:minHeight="?attr/actionBarSize"
        materialdesign:elevation="0dp"
        Android:elevation="0dp"
        Android:outlineProvider="background"
        Android:layout_marginTop="@dimen/appBarTopMargin" >

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

Ai-je eu cela? (Je pense que cela ne changera pas le résultat)

1
user3607438

Placez simplement votre AppBarLayout dans une LinearLayout sur un fichier XML séparé, puis incluez ce XML dans votre XML principal.

1

En Kotlin, utilisez:

supportActionBar!!.elevation = 0.0f 

Cordialement!

0
Moises Portillo

Si vous n’utilisez pas la barre d’outils dans la mise en page et que vous avez la barre d’outils par défaut de AppCompactActivity, cela peut vous aider.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

getSupportActionBar().setElevation(0);

Au moins cela a fonctionné pour moi.

Cordialement,

0
JJeset BC