Je veux par programme supprimer le fond gris dans ImageButton. J'ai essayé plusieurs méthodes pour l'enlever comme -
imageButton.setBackgroundDrawable(null);
mais lors de leur mise en œuvre, l'effet d'entraînement sur l'ImageButton n'est pas sensible. (Pas de mise en évidence au toucher).
Existe-t-il un moyen de supprimer l’arrière-plan tout en préservant l’effet d’ondulation ou de surbrillance.
Si Android:background="?attr/selectableItemBackground"
cela fonctionne, je pense que cette réponse devrait résoudre votre problème:
Créez votre propre RippleDrawable
et vous devez utiliser un masque pour l’ondulation si vous souhaitez utiliser un fond transparent.
<!-- A red ripple masked against an opaque rectangle. --/>
<ripple Android:color="#ffff0000">
<item Android:id="@Android:id/mask"
Android:drawable="@Android:color/white" />
</ripple>
Pour que l'arrière-plan soit transparent avec un effet d'entraînement, l'arrière-plan Drawable doit être un ondulationDrawable, pouvant être transparent. Configurez-le par programme comme ceci.
var mask = new Android.graphics.drawable.GradientDrawable();
mask.setShape(Android.graphics.drawable.GradientDrawable.RECTANGLE);
mask.setColor(0xFF000000); // the color is irrelevant here, only the alpha
mask.setCornerRadius(5); // you can have a rounded corner for the effect
var rippleColorLst = Android.content.res.ColorStateList.valueOf(
Android.graphics.Color.argb(255,50,150,255) // set the color of the ripple effect
);
// aaaand
var ripple = new Android.graphics.drawable.RippleDrawable(rippleColorLst,null,mask);
yourImageButton.setBackground(ripple);
(Désolé pour le code JavaScript/NativeScript, espérons que tout le monde peut le comprendre)