it-swarm.dev

Průhledné pozadí v programu ImageButton s efektem zvlnění?

Chci programově odstranit šedé pozadí v ImageButtonu. Vyzkoušel jsem mnoho způsobů, jak to odstranit -

imageButton.setBackgroundDrawable(null);

ale na jejich implementaci nemám na dotek obrazový efekt. (Žádné zvýraznění na dotek).

Existuje nějaký způsob, jak odstranit pozadí, ale zachovat zvlnění nebo zvýraznění.

18
Confuse

Pokud Android:background="?attr/selectableItemBackground" funguje, myslím si, že tato odpověď by měla vyřešit váš problém:

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

34
Mohib Irshad

Vytvořte si vlastní RippleDrawable a musíte použít masku pro Zvlnění, pokud budete používat průhledné pozadí.

 <!-- 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

Chcete-li mít průhledné pozadí s efektem zvlnění, musí být pozadí DrawpleDrawable, které může být průhledné. Nastavte programově takhle.

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);

(Omlouváme se za kód JavaScriptu nebo nativního jazyka, doufáme, že mu každý může porozumět)

0
Tyg