web-dev-qa-db-ja.com

マテリアルデザインタッチリップルをImageButtonに適用しますか?

それはクリックされたときにタッチアニメーションで応答しないimagebuttonを持っています。これは、組み込みのリップル効果が付属しているLollipopの通常のボタンとは異なり、静的な画像だからです。マテリアルデザインのリップルタッチ効果を画像に追加したいのですが、実装する方法が見つからないようです。画像にカラーフィルターを設定できますが、それはリップル効果ではありません。私がやろうとしていることの例は、Google Playミュージックでアルバムカバー画像を保持し、画像全体に影の波紋が移動する場合です。

78
sanic

さらに良い結果を得るには:

<ImageButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@Android:drawable/ic_button"
    Android:background="?attr/selectableItemBackgroundBorderless"
/>
218
i.shadrin

次のように、ImageButtonに背景を追加するだけです。

<ImageButton
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@Android:drawable/btn_dialog"
    Android:background="?android:attr/selectableItemBackground" />
22
Nicolas

I.shadrin( here )とNicolars(- here )から良い回答を得ました。

回答の違いは、?attr/selectableItemBackgroundBorderlessAndroid.view.InflateExceptionを提供できるため、?android:attr/selectableItemBackgroundが解決策であるということです。

FWIW、例外が発生する理由はわかりません。最初の回答が私のすべての古いプロジェクトでうまく機能したためですが、最近のプロジェクトではうまくいきませんでした(アプリテーマ= Android:Theme.Material?が原因かもしれません)。

起こっていた奇妙なことは、波及効果が示されたにもかかわらず、ImageButtonの範囲外であったため、解決策は次のとおりです。

  • Android:foreground="?android:attr/selectableItemBackgroundBorderless"の代わりにAndroid:background="?android:attr/selectableItemBackgroundBorderless"を使用するには

あなたが同じに直面している場合、それがあなたを助けることを願っています。

4
Filipe Brito