Je veux supprimer l'ombre du bouton pour le rendre plus plat.
J'ai ça maintenant:
Mais je veux ceci:
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" />
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.
J'utilise un style personnalisé
<style name="MyButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"></style>
Java
setStateListAnimator(null);
XML
Android:stateListAnimator="@null"
essayez: Android:stateListAnimator="@null"
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>
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
}
});
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);
}
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>
Les boutons de conception matérielle ajoutent au bouton xml: style="@style/Widget.MaterialComponents.Button.UnelevatedButton"