2

Min SDK ist 21. Wenn ich auf einen Cardview in meinem Recycler-Adapter klicke, kommt der Ripple-Effekt nicht und geht einfach zum nächsten Bildschirm. Die Recycleransicht befindet sich in einem Fragment.Cardview Ripple-Effekt funktioniert nicht

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/entire_card" 
     android:layout_width="match_parent" 
     android:layout_height="265dp" 
     android:layout_margin="8dp" 
     android:foreground="?android:attr/selectableItemBackground" 
     app:cardUseCompatPadding="true" 
     app:cardCornerRadius="2dp" 
     > 


     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <ProgressBar 
       android:id="@+id/progressbar" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:layout_centerHorizontal="true" 
       android:paddingTop="120dp" 
       android:visibility="visible"/> 


      <ImageView 
       android:id="@+id/pet_image" 
       android:layout_width="match_parent" 
       android:layout_height="210dp" 
       android:layout_alignParentTop="true" 
       android:scaleType="centerCrop" 
       android:src="@drawable/placeholder" 
       android:visibility="gone" 
       /> 

      <TextView 
       android:id="@+id/pet_description" 
       android:layout_width="fill_parent" 
       android:layout_height="55dp" 
       android:layout_below="@+id/pet_image" 
       android:padding="10dp" 
       android:textColor="#FFFFFF" 
       android:visibility="gone" 
       android:textSize="20sp" 
       android:background="@color/primaryColour" 
       /> 

     </RelativeLayout> 
    </android.support.v7.widget.CardView> 

</LinearLayout> 

Adapter Code, wo ich meine onClick für jedes Element haben.

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     public TextView petInfo; 
     public ImageView imgURL; 
     public ProgressBar progressBar; 

     private Context itemContext; 
     public ViewHolder(View v){ 
      super(v); 
      imgURL = (ImageView) v.findViewById(R.id.pet_image); 
      petInfo = (TextView) v.findViewById(R.id.pet_description); 
      progressBar = (ProgressBar) v.findViewById(R.id.progressbar); 

      itemContext = v.getContext(); 

      v.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v){ 

      Intent intent= new Intent(itemContext, DetailCardLayout.class); 
      Integer position = getAdapterPosition(); 
      intent.putExtra("CARDVIEW_POSITION", position); 
      v.getContext().startActivity(intent); 

     } 
    } 
+0

Setzen Sie Ihre CardView als Root-Layout und versuchen Sie es. –

+0

Das hilft! Der Ripple-Effekt funktioniert jedoch nur für zwei Klicks. d. h. auf eine Kartenansicht klicken, zum nächsten Bildschirm gehen und zurück drücken. wiederholen. dann, wenn Sie ein drittes Mal nicht mehr Ripple-Effekt klicken – DessertsAndStuff

Antwort

1

Try

android:clickable="true" 

Ihrer Karte Ansicht xml

+0

Das scheint zu helfen. Wenn ich jedoch scrollen, um mehr zu sehen (2 Karten nehmen einen Bildschirm auf), scheint der Welleneffekt nach den ersten beiden Karten nicht zu funktionieren. – DessertsAndStuff

0

Versuchen Sie, Fügen Sie Ihr Bild in einem FrameLayout mit einem Vordergrund Attribut Verpackung: android:foreground="?attr/selectableItemBackground"

Z.B.

0

Ihre Kartenansicht enthält ein relatives Layout, das die Kartenansichtsfläche abdeckt, so dass der Welleneffekt im relativen Layout angezeigt wird.

<android.support.v7.widget.CardView 
    android:id="@+id/cardView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:cardPreventCornerOverlap="false" 
    app:cardElevation="2dp" 
    app:cardUseCompatPadding="false" 
    app:cardCornerRadius="2dp" 
    android:layout_marginBottom="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginLeft="8dp" 
    > 
    <RelativeLayout 
     android:id="@+id/rl_bookmark" 
     android:background="?attr/selectableItemBackground" 
     android:clickable="true" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> ... 
Verwandte Themen