API22のRelativeLayout
に波及効果を実装しようとしていますが、表示されません。ただし、同じリップルがButton
でも機能します。
私のリップルドローアブルのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="#d1c4e9">
<item Android:id="@Android:id/mask"
Android:drawable="@Android:color/white" />
<item Android:drawable="@drawable/rect"/>
</ripple>
相対レイアウトのコードは次のとおりです。
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity"
Android:background="@drawable/ripple">
</RelativeLayout>
この後、リップルはButton
とRelativeLayout
の背景として設定されます。ボタンの波紋はうまく機能しますが、RelativeLayout
にはまったく表示されません。
誰かが私が間違っていることを教えてもらえますか?
この属性を追加するAndroid:clickable="true"
動作します。 Nexus5でテスト済み
Rahunandanが言ったことに加えて、appcompat-v7サポートライブラリを使用している場合は、Android:background="?attr/selectableItemBackground"
も追加する必要があります。
レイアウトのこの属性。
Android:background="?attr/selectableItemBackground"
Android:clickable="true"
私の場合、最初のクリック後に波及効果が機能していますが、最初のクリックでは機能しませんでした。バックグラウンドセレクターファイルをAndroid:state_activate = "true"およびmain.xml Android:clickable = "true"に変更すると、常に正常に機能します。
selector.xml(res\drawable\selector.xmlの下)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_activated="true" Android:drawable="@drawable/card_bg_pressed" Android:state_enabled="true" Android:state_pressed="true"/>
<item Android:state_activated="true" Android:drawable="@drawable/card_bg_focused" Android:state_enabled="true" Android:state_focused="true"/>
<item Android:state_activated="true" Android:drawable="@drawable/card_bg_selected" Android:state_enabled="false" Android:state_selected="true"/>
</selector>
Activity_main.xml内
<com.mysample.RecyclingImageView
Android:id="@+id/imageview_overlay"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_horizontal"
Android:background="@drawable/selector"
Android:clickable="true"/>