ImageButtonにリップル効果を実装しようとしています。背景のリップルとsrcの描画可能な画像を設定しました。
Android:background="@drawable/myripplexml"
Android:src="@drawable/myimagepath"
ボタンレイアウト内に素敵な波及効果を与えます。しかし、Rippleエフェクトをボタンレイアウトの外側にも拡張したいのです。
Android:background="?android:attr/selectableItemBackgroundBorderless"
ただし、デフォルトの色とスタイルを使用します。色、形、サイズに関してどのようにカスタマイズできますか?
私はこれに遭遇し、私の問題は、「selectableItemBackgroundBorderless」が長方形を作成する一方で、ボタンが円形であったことです。これが元の質問に答えているかどうかはわかりませんが、ここに私が見つけたものがあります:drawable-v21でこれに背景を設定してください
<ripple
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="?android:colorControlHighlight">
<item Android:id="@Android:id/mask">
<shape Android:shape="oval">
<solid Android:color="?android:colorAccent" />
</shape>
</item>
</ripple>
下位APIレベルの@null(実際の画像ボタンsrcにセレクターを使用していると仮定)。ボタンのパディングで最も見やすい波紋。マスキングレイヤーがまったくない場合リップルはバインドされておらず、画面全体を支配します。円でなければ、どんな形でも使用できます。
あなたが私のような怠け者なら、デフォルトの波紋を利用して、後方互換性を忘れてください。基本的に、urビューに追加できる2つのタイプの背景リップルがあります。
?android:selectableItemBackground // Ripple within view
?android:selectableItemBackgroundBorderless //Ripple outside view
残念ながら、これらの波紋は常に灰色です。テーマに基づいてこれらを調整するには、ur親テーマに移動し、colorControlHighlightを変更します。
アプリのメインテーマ:
<item name="colorControlHighlight">#1bff3a</item>
この値は、デフォルトのリップルの色を変更します。
注:21未満のデバイスでは、リップルは設定した同じ色の通常のセレクターに変わります。
@alanがコメントで言及したように。マスクと子アイテムのないリップルアイテムを作成し、それをビューの背景として追加すると、リップルは最初に使用可能な親の上に描画され、ビューの境界を拡張する場合があります。 これはドキュメントに記載されています
<!-- An unbounded red ripple. --/>
<ripple Android:color="#ffff0000" />