Ripple效果在RelativeLayout中不起作用

时间:2015-08-11 11:17:35

标签: android button android-relativelayout rippledrawable

我试图在API 22上的RelativeLayout中实现涟漪效应,但它并没有显示出来。但是,相同的纹波在Button中起作用。

我的波纹drawable的代码如下:

<?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上。

谁能告诉我我做错了什么?

4 个答案:

答案 0 :(得分:24)

添加此属性android:clickable="true"有效。在Nexus 5上测试

答案 1 :(得分:6)

除了Rahunandan所说的,如果您使用的是appcompat-v7支持库,您还需要添加 android:background="?attr/selectableItemBackground"

答案 2 :(得分:3)

布局中的此属性。

android:background="?attr/selectableItemBackground"
android:clickable="true"

答案 3 :(得分:0)

在我的情况下,第一次点击后涟漪效果正常,但是第一次点击它对我不起作用。已经使用 android:state_activated =“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"/>