92 votes

Comment fournir de l'ombre au bouton

enter image description here

Comme vous pouvez le voir dans l'image, je veux une ombre derrière un Button . J'ai créé Button avec des coins arrondis. Mais le problème, c'est que je ne peux pas générer d'ombre derrière cette image. Button . Comment puis-je y parvenir ?

4voto

DjHacktorReborn Points 2502

Essayez ceci si cela fonctionne pour vous

enter image description here

android:background="@drawable/drop_shadow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="3dp"
        android:paddingTop="3dp"
        android:paddingRight="4dp"
        android:paddingBottom="5dp"

1voto

shijo Points 91

Exemple 9 : image de patch avec ombre

Après de nombreuses recherches, j'ai trouvé une méthode simple.

Créez une image de 9 patchs et appliquez-la comme bouton ou comme arrière-plan de toute autre vue.

Vous pouvez créer une image 9 patchs avec des ombres en utilisant ceci site web .

Placez l'image 9 patch dans votre répertoire drawable et appliquez-la comme arrière-plan pour le bouton.

mButton.setBackground(ContextCompat.getDrawable(mContext, R.drawable.your_9_patch_image);

0voto

Jeffrey Blattman Points 8891

Puisqu'aucune des réponses ici n'aborde vraiment la question, je voulais signaler que https://github.com/Devlight/ShadowLayout (pas mon projet). Il s'agit d'une simple mise en page Android que vous pouvez enrouler autour de n'importe quoi pour lui donner une ombre. La bibliothèque est une seule classe et seulement ~250 lignes. Le README dit qu'elle est dépréciée, mais elle fonctionne très bien.

Envelopper toutes vos vues n'est pas idéal, mais jusqu'à ce qu'Android fournisse un mécanisme standard pour introduire une ombre, ou que vous souhaitiez dessiner tous les états de vos boutons sous forme de bitmaps incluant les pixels de l'ombre, c'est la meilleure option que je pouvais imaginer.

0voto

Akshay Masram Points 11

Ajouter les 2 lignes ci-dessous a fonctionné pour moi

android:elevation="10dp"

android:stateListAnimator="@null"

-1voto

Mohammad Julfikar Points 611

Vous pouvez essayer ceci :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
        <item android:left="1dp" android:top="3dp">
            <shape>
                <solid android:color="#a5040d" />
                <corners android:radius="3dip"/>
            </shape>
        </item>
    </layer-list>
  </item>
<item>
    <layer-list>
        <item android:left="0dp" android:top="0dp">
            <shape>
                    <solid android:color="#99080d" />
                <corners android:radius="3dip"/>
            </shape>
        </item>
        <item android:bottom="3dp" android:right="2dp">
            <shape>
                <solid android:color="#a5040d" />
                <corners android:radius="3dip"/>
            </shape>
        </item>
    </layer-list>
</item>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X