31

ImageButton のリップル効果を実装しようとしています。背景にリップルを設定し、src に描画可能な画像を設定しました。

android:background="@drawable/myripplexml"
android:src="@drawable/myimagepath"

ボタンレイアウト内に素敵な波及効果を与えます。しかし、波紋効果をボタンレイアウトの外側にも拡張したい.それを行う別の方法は、次を使用することです:

 android:background="?android:attr/selectableItemBackgroundBorderless"

ただし、デフォルトの色とスタイルを使用します。色、形、サイズをカスタマイズするにはどうすればよいですか?

4

3 に答える 3

23

私はこれに遭遇しました。私の問題は、ボタンが円形であるのに、「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 にセレクターを使用していると仮定します)。ボタンのパディングで最も目立つ波紋。マスキング レイヤーがまったくない場合、リップルはバインドされておらず、画面全体を占有します。円以外ならどんな形でも構いません。

于 2015-05-04T16:34:38.037 に答える
19

あなたが私のように怠け者である場合は、デフォルトのリップルを利用して、下位互換性を忘れてください。基本的に、ビューに追加できる背景リップルには 2 種類あります。

 ?android:selectableItemBackground // Ripple within view
 ?android:selectableItemBackgroundBorderless //Ripple outside view

残念ながら、これらの波紋は常に灰色です。テーマに基づいてこれらを微調整するには、親テーマに移動し、colorControlHighlight を変更します。

アプリのメイン テーマで:

<item name="colorControlHighlight">#1bff3a</item>

この値は、デフォルトの波紋の色を変更します。

注: 21 未満のデバイスでは、リップルは、設定した色と同じ色の正常なセレクターに変わります。

于 2016-09-28T14:32:36.757 に答える
13

@alan がコメントで述べたように。マスクと子アイテムのないリップル アイテムを作成し、それをビューの背景として追加すると、リップルは最初に使用可能な親の上に描画され、ビューの境界を拡張する場合があります。これはドキュメントに記載されています

<!-- An unbounded red ripple. --/>
<ripple android:color="#ffff0000" />
于 2015-12-30T13:22:04.470 に答える