web-dev-qa-db-fra.com

Supprimer l'ombre d'élévation sans supprimer l'élévation elle-même

Existe-t-il un moyen pour AppBarLayout de ne pas créer d'ombre portée et de conserver son élévation?

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

Pour compléter la réponse de M.Sandholtz, vous pouvez également la définir en XML, avec outlineProvider = "none".

<View
    Android:id="@+id/viewElevationNoShadow"
    Android:outlineProvider="none"
    Android:elevation="4dp"/>
28
Sean Blahovici

Je viens de rencontrer ce même problème et c'est ce qui l'a résolu pour moi:

val withElevationNoShadow = view.findViewById<*your view type*>(*your view id*)
withElevationNoShadow.outlineProvider = null

Gardez à l'esprit que le code ci-dessus est Kotlin, mais le Java est presque identique.

Cela fonctionne car les ombres sont dessinées par ViewOutlineProviders. En définissant ViewOutlineProvider sur null, vous supprimez l'ombre par défaut.

Pour plus d'informations sur ViewOutlineProviders consultez

https://developer.Android.com/reference/Android/view/ViewOutlineProvider

et

https://developer.Android.com/training/material/shadows-clipping

17
Clark Sandholtz