涟漪效果不适用于Layout onClick



我用了很多次这种涟漪效果,但在这个页面上,它在点击图像时不起作用。

我也在这个布局(封面(上尝试过这种方法,但仍然不起作用。我使用RecyclerView,所以我放置了适配器代码和RecyclerViewItem布局。

RecyclerViewItem_layout.xml:

<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="8dp"
app:cardUseCompatPadding="true"
android:elevation="0dp"
app:cardElevation="0dp"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/cover"
android:focusable="true"
android:clickable="true"
android:background="@drawable/ripple_effect_for_image"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="140dp"
android:src="@drawable/img_one"
android:scaleType="fitXY"/>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:textSize="16sp"
android:visibility="gone"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:textColor="@color/white_to_black"
android:textStyle="bold"
android:maxWidth="90dp"/>
</RelativeLayout> 
</androidx.cardview.widget.CardView>

AdapterClass.java:

public void onBindViewHolder(@NonNull AdapterCategory.viewH holder, int position) {
holder.img.setImageResource(modelCategories.get(position).getImg());
holder.cover.setOnClickListener(v -> {
if (position==0){
Intent ig = new Intent(new Intent(getActivity(), OrderDailyGrocery.class));
ig.putExtra("sentMsg",Grocery);
startActivity(ig);
}else if (position == 1){
Intent ig = new Intent(new Intent(getActivity(), OrderDailyGrocery.class));
ig.putExtra("sentMsg",Fruits);
startActivity(ig);
}else if (position == 2){
Intent ig = new Intent(new Intent(getActivity(), PickupDrop.class));
startActivity(ig);
}else if (position==3){
Intent ig = new Intent(new Intent(getActivity(), OrderDailyGrocery.class));
ig.putExtra("sentMsg",Meat);
startActivity(ig);
}
});
}
@Override
public int getItemCount() {
return modelCategories.size();
}
public class viewH extends RecyclerView.ViewHolder {
ImageView img;
RelativeLayout cover;
public viewH(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.img);
cover = itemView.findViewById(R.id.cover);
}
}

Ripple_effect_for_image.xml

<ripple
android:color="#50CF1A87">
<item>
<color android:color="#50AA2626" />
</item>
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="?android:colorAccent" />
</shape>
</item>

使用MaterialCardView而不是CardView。它具有设置波纹效果的默认属性。(#app:rippleColor(

选中此项:https://material.io/components/cards/android#using-卡片

最新更新