波纹效果在 RelativeLayout 中不起作用
Posted
技术标签:
【中文标题】波纹效果在 RelativeLayout 中不起作用【英文标题】:Ripple effect does not work in RelativeLayout 【发布时间】:2015-11-03 14:15:06 【问题描述】:我正在尝试在 API 22 上的 RelativeLayout
中实现涟漪效应,但它没有出现。然而,同样的涟漪在 Button
中起作用。
我的ripple 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_
android:layout_
tools:context=".MainActivity"
android:background="@drawable/ripple">
</RelativeLayout>
在此之后,波纹被设置为Button
和RelativeLayout
的背景。按钮上的波纹效果很好,但它根本没有出现在 RelativeLayout
上。
谁能告诉我我做错了什么?
【问题讨论】:
这个波纹对象类是从哪里来的? drawable-v21中的drawable吗? 福尔摩斯:抱歉,我没听懂你的问题? Raghunandan:是的,它在 drawable-v21 中,非常适合按钮,但不适用于相对布局 @VarunKumar 点击RelativeLayout
会发生什么。你还有其他孩子的观点吗?发布您的相对布局代码。 xml。让我们看看我们是否可以重现您的问题
【参考方案1】:
添加此属性android:clickable="true"
有效。在 Nexus 5 上测试
【讨论】:
【参考方案2】:除了 Rahunandan 说的,如果你使用 appcompat-v7 支持库你还需要添加
android:background="?attr/selectableItemBackground"
.
【讨论】:
如果你已经有一个背景属性,你应该如何添加另一个背景属性??? 如果您已经有背景属性,您可以设置前景属性。尝试尝试最适合您的 UI 的方法。尝试将现有背景设置为前景,将selectableItemBackground
设置为背景。如果设置前景对您不起作用,您可以在视图之外添加LinearLayout
并在LinearLayout
上设置android:background="?attr/selectableItemBackground"
。希望这是有道理的。
你是对的,它确实有很大帮助!所以我所做的只是将它设置为我的前景,我之前实际上已经这样做了但是我使用的颜色并不明显,现在它可以了。谢谢。【参考方案3】:
布局中的这个属性。
android:background="?attr/selectableItemBackground"
android:clickable="true"
【讨论】:
【参考方案4】:在我的情况下,涟漪效应在第一次点击后起作用,但对于第一次点击它对我不起作用。已经用 android:state_activated="true" 和 main.xml android:clickable="true" 更改了背景选择器文件,那么它一直都可以正常工作。 p>
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_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@drawable/selector"
android:clickable="true"/>
【讨论】:
什么意思?这里似乎没有涟漪。【参考方案5】:对我来说,这是可行的(API 23 及更高版本)
android:background="@drawable/your_background"
android:clickable="true"
android:foreground="?attr/selectableItemBackground"
【讨论】:
以上是关于波纹效果在 RelativeLayout 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
@font-face 在 Firefox 中不起作用 [重复]