web-dev-qa-db-ja.com

リップル効果のあるImageButtonの透明な背景?

プログラムで ImageButtonの灰色の背景を削除したい。私はそれを削除する多くの方法を試しました-

imageButton.setBackgroundDrawable(null);

しかし、それらを実装すると、タッチしたときにImageButtonに波及効果がありません。 (タッチしても強調表示されません)。

背景を削除する方法はありますが、波紋効果またはハイライトを保持しますか。

21
Confuse

Android:background="?attr/selectableItemBackground"これは、この答えがあなたの問題を解決するはずだと私が信じているよりもうまくいきます:

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

39
Mohib Irshad

独自のRippleDrawableを作成します。透明な背景を使用する場合は、リップルにマスクを使用する必要があります。

 <!-- A red ripple masked against an opaque rectangle. --/>
 <ripple Android:color="#ffff0000">
   <item Android:id="@Android:id/mask"
         Android:drawable="@Android:color/white" />
 </ripple>
9
Malvin

リップル効果のある透明な背景を作成するには、背景のDrawableがrippleDrawableである必要があり、これは透明にすることができます。このようにプログラムで設定します。

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

(JavaScript/NativeScriptコードについては申し訳ありませんが、誰もがそれを理解できることを願っています)

0
Tyg