2017-02-18 28 views
2

Минимальный SDK равен 21. Когда я нажимаю на карту в адаптере recycler, эффект пульсации не происходит и просто переходит к следующему экрану. Рециркуляция внутри фрагмента.Эффект пульсации Cardview не работает

<?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> 

Код адаптера, где у меня есть onClick для каждого элемента.

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

Установите CardView в качестве корневого макета и попробуйте. –

+0

Это помогает! Однако эффект пульсации работает только на два клика. т.е. нажмите на карту, перейдите к следующему экрану и нажмите обратно. повторение. то когда вы нажимаете в третий раз больше пульсирующего эффекта – DessertsAndStuff

ответ

1

Попробуйте добавить

android:clickable="true" 

к вашей карте зрения XML

+0

Это похоже на помощь. Однако, когда я прокручиваю, чтобы увидеть больше (2 карты занимают экран), эффект пульсации, похоже, не работает после первых двух карт. – DessertsAndStuff

0

Попробуйте обертывание изображения в FrameLayout с передним планом атрибутом: android:foreground="?attr/selectableItemBackground"

Э.Г.

<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:focusable="true" 
     android:foreground="?attr/selectableItemBackground" 
     > 

     <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" 
      /> 

    </FrameLayout> 
0

Ваше мнение карты содержит относительный макет, который покрывает поверхность вида карты, так что писать волновой эффект в относительной компоновке.

<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"> ...