Android 涟漪效应与图像在相对布局中不起作用

Android 涟漪效应与图像在相对布局中不起作用,android,android-layout,xamarin,android-recyclerview,material-design,Android,Android Layout,Xamarin,Android Recyclerview,Material Design,Ripple effect不适用于以下代码!在“回收器”视图中将以下相对布局用作项目。使用Xamarin平台构建 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativelayout" android:layout_width="fill_pa

Ripple effect不适用于以下代码!在“回收器”视图中将以下相对布局用作项目。使用Xamarin平台构建

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelayout"
    android:layout_width="fill_parent"
    android:layout_height="120dp"
    android:paddingBottom="1dp"
    android:focusable="true"
    android:clickable="true"
    android:foreground="?android:attr/selectableItemBackground">
    <ImageView
        android:id="@+id/bugImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop" 
        android:src="@drawable/grey_small"
        android:clickable="false"/>
    <TextView
        android:id="@+id/textBugName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/bugImage"
        android:layout_alignTop="@id/bugImage"
        android:layout_alignBottom="@id/bugImage"
        android:gravity="left"
        android:text="Klebsiella pneumoniae"
        android:textColor="#ffffffff"
        android:textSize="30dp"
        android:layout_marginRight="145dp"
        android:padding="10dp"
        android:shadowColor="#000000"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="25"
        android:clickable="false"/>
    <TextView
        android:id="@+id/textBugCount"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/bugImage"
        android:layout_alignTop="@id/bugImage"
        android:layout_alignBottom="@id/bugImage"
        android:gravity="right"
        android:text="234"
        android:textColor="#ffffffff"
        android:textSize="30dp"
        android:padding="10dp" 
        android:shadowColor="#000000"
        android:shadowDx="0"
        android:shadowDy="0"
        android:shadowRadius="25"
        android:clickable="false"/>
</RelativeLayout>

我已经尝试过这个
android:foreground=“?android:attr/selectableitemsbackground”
,但没有成功


如何解决这个问题?我在api 22上测试了它。

不确定您想用它实现什么(即设置前景):

试试这个:

android:background="?android:attr/selectableItemBackground"
虽然我使用自定义的drawable来控制颜色,如下所示:

在您的RelativeLayout
android:background=“@drawable/mybackground”

在res/drawable中,mybackground.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
    <item android:state_activated="true" android:drawable="@color/colorAccent" />
    <item android:drawable="@color/listBackground" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="@color/disabledBackground" xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <selector>
        <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
        <item android:state_activated="true" android:drawable="@color/colorAccent" />
        <item android:drawable="@color/listBackground" />
    </selector>
    </item>
</ripple>

在res/drawable-v21中,mybackground.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
    <item android:state_activated="true" android:drawable="@color/colorAccent" />
    <item android:drawable="@color/listBackground" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="@color/disabledBackground" xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <selector>
        <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
        <item android:state_activated="true" android:drawable="@color/colorAccent" />
        <item android:drawable="@color/listBackground" />
    </selector>
    </item>
</ripple>


这里您已经指定了ripple effect,它在v21+平台上受支持。您可以根据需要调整颜色和状态,禁用Background、colorAccent、listBackground只是命名颜色属性的示例

不确定您要用它实现什么(即设置前景):

试试这个:

android:background="?android:attr/selectableItemBackground"
虽然我使用自定义的drawable来控制颜色,如下所示:

在您的RelativeLayout
android:background=“@drawable/mybackground”

在res/drawable中,mybackground.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
    <item android:state_activated="true" android:drawable="@color/colorAccent" />
    <item android:drawable="@color/listBackground" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="@color/disabledBackground" xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <selector>
        <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
        <item android:state_activated="true" android:drawable="@color/colorAccent" />
        <item android:drawable="@color/listBackground" />
    </selector>
    </item>
</ripple>

在res/drawable-v21中,mybackground.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
    <item android:state_activated="true" android:drawable="@color/colorAccent" />
    <item android:drawable="@color/listBackground" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<ripple android:color="@color/disabledBackground" xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <selector>
        <item android:state_pressed="true" android:drawable="@color/disabledBackground" />
        <item android:state_activated="true" android:drawable="@color/colorAccent" />
        <item android:drawable="@color/listBackground" />
    </selector>
    </item>
</ripple>


这里您已经指定了ripple effect,它在v21+平台上受支持。您可以根据需要调整颜色和状态,disabledBackground、colorAccent、listBackground只是命名颜色属性的示例

将RelativeLayout作为根视图,您应该将本机ripple设置为background=“”而不是前台=“”


或者您可以尝试实现一个cardview,该cardview将正确响应前台=“”

,并将RelativeLayout作为根视图。您应该将本机ripple设置为background=“”,而不是前台=“”

或者您可以尝试实现一个cardview,它将正确响应前台=“”

android:前台=“?android:attr/selectableItemBackground”

仅适用于框架布局

使用

android:background=“?android:attr/selectableItemBackground”

或者最好使用:

android:background=“?attr/selectableItemBackground”

如果您正在使用compat库

android:前台=“?android:attr/selectableItemBackground”

仅适用于框架布局

使用

android:background=“?android:attr/selectableItemBackground”

或者最好使用:

android:background=“?attr/selectableItemBackground”


如果您正在使用compat库,只需将android:onClick=“单击此处添加侦听器”和android:background=“?android:attr/selectableItemBackground”添加到需要连锁反应的布局中即可。这对我很有用。

只需将android:onClick=“add on click listener here”和android:background=“?android:attr/selectableItemBackground”添加到需要连锁反应的布局中即可。这对我很有用。

更多信息。。。。请提供更多信息。。。。请注意,它可以工作,但问题是在用户注意到ripple之前,视图已经更改。长点击显示涟漪,但普通点击不像WhatsApp那样显示涟漪。在WhatsApp中,它显示ripple,然后视图被更改,但是我无法实现此功能,尽管我添加了这些代码行。它可以工作,但问题是在用户注意到ripple之前,视图被更改。长点击显示涟漪,但普通点击不像WhatsApp那样显示涟漪。在WhatsApp中,它显示ripple,然后视图被更改,但是我无法实现此功能,尽管我添加了这些代码行。