J'ai donc cherché sur le Web un moyen d'afficher une ombre simple pour une mise en page, mais il n'y a pas de moyen approprié de le faire.
.
Existe-t-il un autre moyen d'avoir une ombre de mise en page simple sans ajouter une toute nouvelle mise en page?
J'ai pu trouver une solution à ce problème, et cela en ajoutant un View
en dessous de notre fameuse mise en page, affichant un dégradé d'une couleur à l'autre.
Habituellement, la couleur First serait une sorte de grisâtre foncé, et la Second serait la couleur --- background (dans mon cas, je vais avoir un fond gris clair donc ce n'est pas complètement blanc).
Le xml se présenterait comme ceci:
...
<LinearLayout
Android:id="@+id/headerLayout"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/headerImage"
Android:orientation="vertical" />
<View
Android:layout_width="fill_parent"
Android:layout_height="5dip"
Android:background="@drawable/drop_shadow" >
</View>
</LinearLayout>
...
drop_shadow.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<gradient
Android:startColor="#404040"
Android:endColor="#F1F1F1"
Android:angle="270"
>
</gradient>
</shape>
J'espère que ça va aider;)
Vous pouvez utiliser le Android.support.v4.view.ViewCompat
classe qui définit l'élévation d'une vue à l'aide de la méthode statique setElevation
. La classe est une aide pour accéder aux fonctionnalités en vue introduites après le niveau 4 de l'API de manière rétrocompatible.
L'élévation de base est en pixels, par exemple
View mFab = (View) findViewById(R.id.floating_button);
ViewCompat.setElevation(mFab, 12);
Pour Lollipop et au-dessus, vous pouvez utiliser élévation .
Pour les anciennes versions:
Voici un hack paresseux de: http://odedhb.blogspot.com/2013/05/Android-layout-shadow-without-9-patch.html
(toast_frame ne fonctionne pas sur KitKat, l'ombre a été supprimée des toasts)
utilisez simplement:
Android:background="@Android:drawable/toast_frame"
ou:
Android:background="@Android:drawable/dialog_frame"
comme arrière-plan
exemples:
<TextView
Android:layout_width="fill_parent"
Android:text="I am a simple textview with a shadow"
Android:layout_height="wrap_content"
Android:textSize="18sp"
Android:padding="16dp"
Android:textColor="#fff"
Android:background="@Android:drawable/toast_frame"
/>
et avec différentes couleurs bg:
<LinearLayout
Android:layout_height="64dp"
Android:layout_width="fill_parent"
Android:gravity="center"
Android:background="@Android:drawable/toast_frame"
Android:padding="4dp"
>
<Button
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:text="Button shadow"
Android:background="#33b5e5"
Android:textSize="24sp"
Android:textStyle="bold"
Android:textColor="#fff"
Android:layout_gravity="center|bottom"
/>
</LinearLayout>