web-dev-qa-db-fra.com

Comment supprimer l'ombre des boutons (Android)

Je veux supprimer l'ombre du bouton pour le rendre plus plat.

J'ai ça maintenant: 

cancel button with shadow

Mais je veux ceci: 

cancel button without shadow

104
sousheel

Une autre alternative consiste à ajouter

style="?android:attr/borderlessButtonStyle"

à votre bouton xml comme documenté ici http://developer.Android.com/guide/topics/ui/controls/button.html

Un exemple serait

<Button
Android:id="@+id/button_send"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/button_send"
Android:onClick="sendMessage"
style="?android:attr/borderlessButtonStyle" />
285
Alt-Cat

Un moyen plus simple consiste à ajouter cette balise à votre bouton:

Android:stateListAnimator="@null"

bien que cela nécessite le niveau 21 ou plus de l'API.

70
Alon Kogan

J'utilise un style personnalisé

<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>
38
郑松岚

Java

setStateListAnimator(null);

XML

Android:stateListAnimator="@null"
25
Michael

essayez: Android:stateListAnimator="@null"

20
ghui zhang

Utiliser ceci comme arrière-plan pour votre bouton peut aider

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" >
        <shape Android:shape="rectangle">
            <solid Android:color="@color/app_theme_light" />
            <padding
                Android:left="8dp"
                Android:top="4dp"
                Android:right="8dp"
                Android:bottom="4dp" />
        </shape>
    </item>
    <item>
        <shape Android:shape="rectangle">
            <solid Android:color="@color/app_theme_dark" />
            <padding
                Android:left="8dp"
                Android:top="4dp"
                Android:right="8dp"
                Android:bottom="4dp" />
        </shape>
    </item>
</selector>
6
dlohani

Au lieu d'un bouton, vous pouvez utiliser un objet TextView et ajouter un écouteur de clic dans le code Java.

C'est à dire.

dans la mise en page d'activité xml:

<TextView
    Android:id="@+id/btn_text_view"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@color/colorPrimaryDark"
    Android:text="@string/btn_text"
    Android:gravity="center"
    Android:textColor="@color/colorAccent"
    Android:fontFamily="sans-serif-medium"
    Android:textAllCaps="true" />

dans le fichier Java d'activité:

TextView btnTextView = (TextView) findViewById(R.id.btn_text_view);
btnTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // handler code
            }
        });
3
caitoo0o

la réponse @ Alt-Cat fonctionne pour moi!

R.attr.borderlessButtonStyle ne contient pas d'ombre.

et le document de button est super.

Vous pouvez également définir ce style sur votre bouton personnalisé, dans le deuxième constructeur.

    public CustomButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.attr.borderlessButtonStyle);
    }
3
Xiang Li

Toutes les réponses ci-dessus sont excellentes, mais je proposerai une autre option:

<style name="FlatButtonStyle" parent="Base.Widget.AppCompat.Button">
 <item name="Android:stateListAnimator">@null</item>
 <!-- more style custom here --> 
</style>


1
Duc Thang

Les boutons de conception matérielle ajoutent au bouton xml: style="@style/Widget.MaterialComponents.Button.UnelevatedButton"

0
Efi G