web-dev-qa-db-fra.com

Fond transparent dans ImageButton avec effet d'entraînement?

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.

18
Confuse

Si Android:background="?attr/selectableItemBackground" cela fonctionne, je pense que cette réponse devrait résoudre votre problème:

https://stackoverflow.com/a/28087443/2534007

34
Mohib Irshad

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>
8
Malvin

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)

0
Tyg