web-dev-qa-db-ja.com

波及効果はRelativeLayoutでは機能しません

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>

この後、リップルはButtonRelativeLayoutの背景として設定されます。ボタンの波紋はうまく機能しますが、RelativeLayoutにはまったく表示されません。

誰かが私が間違っていることを教えてもらえますか?

10
Varun Kumar

この属性を追加するAndroid:clickable="true"動作します。 Nexus5でテスト済み

26
Raghunandan

Rahunandanが言ったことに加えて、appcompat-v7サポートライブラリを使用している場合は、Android:background="?attr/selectableItemBackground"も追加する必要があります。

6
Ali Kazi

レイアウトのこの属性。

Android:background="?attr/selectableItemBackground"
Android:clickable="true"
4
Victor Tellez

私の場合、最初のクリック後に波及効果が機能していますが、最初のクリックでは機能しませんでした。バックグラウンドセレクターファイルを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"/>
0
anand krish