0

我有我的列表视图,旁边有一个文本和一个 ImageButton,将来应该在右侧。当我触摸文本或白色字段时,我想看到涟漪效应。我怎样才能做到这一点?

目前,当我触摸图像按钮时,只有涟漪效应。

这就是我的 list_item 代码,我在其中设置了一行的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text"
    android:elevation="2dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="15dp"
    android:textColor="@android:color/black"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:layout_centerVertical="true"
    android:layout_marginTop="40dp"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    />

<ImageButton
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:src="@drawable/ic_delete_black_24dp"
    android:tint="#F44336"
    android:backgroundTint="@color/background"
    />


</RelativeLayout>

我发现,我必须使用 LinearLayout,但我不知道如何正确使用它。我的 ListView 看起来像这样:

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#E0E0E0"
    android:dividerHeight="1dp"
    android:drawSelectorOnTop="true"
    >
    </ListView>

这是当前外观的屏幕截图: 当我按下右侧的红色图像按钮时,它周围会有一个波纹效果。 在我接触的所有其他地方,都没有涟漪效应。

有什么建议可以解决吗?^^ 提前谢谢

编辑: 我忘了说,当我定义了 imagebutton 时,来自 listview 的 OnItemClickListerner 不再起作用

4

1 回答 1

0

据我所知,Ripple 仅显示给可点击视图(ListView 的行、按钮或其他可点击对象)。根据那些响应的对象显示的材料理论动画(我认为TextView不需要在点击时响应)。在您的情况下TextView没有显示,因为它根本无法正常工作,但它适用于按钮(ImageButton是按钮)。

如果您仍然想要这个,只需使用这些第三部分库之一 -

https://github.com/lgvalle/Material-Animationshttps://github.com/balysv/material-ripple

这是最简单的方法!

于 2015-07-07T20:11:19.620 回答