1

I'm trying to implement and expandable CardView, but I'm having proplems heres my xml file for the cardview:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginTop="8dp"
    android:clickable="true"
    android:elevation="5dp"
    android:foreground="?android:attr/selectableItemBackground"
    android:orientation="vertical"
    android:stateListAnimator="@drawable/cardview_lift_on_touch">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">


        <com.android.volley.toolbox.NetworkImageView
            android:id="@+id/product_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop"
            android:src="@drawable/default_network_image"/>

        <TextView
            android:id="@+id/product_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="16dp"
            android:paddingBottom="16dp"
            android:paddingLeft="16dp"
            android:paddingTop="24dp"
            android:text="Product Name"
            android:textColor="#000000"
            android:textSize="24dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/product_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="16dp"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:text="A buyer persona is an imaginary customer. It is the person for whom you've developed your product and to whom you'd love to sell it (of course!). He or she represents your target audience, but is much more real than a vague description of some demographics."
            android:textColor="#000000"
            android:textSize="14dp"
            android:visibility="visible" />

        <TextView
            android:id="@+id/product_url"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="24dp"
            android:paddingLeft="16dp"
            android:text="example.syriatel.sy/akrab_eleik"
            android:textColor="#0048ff"
            android:textSize="14dp" />

    </LinearLayout>

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

I'm trying to expand the "product description" TextView when the CardView is clicked by passing it to the following method:

public static void expand(final View v) {

    final int initialHeight = v.getHeight();
    v.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    final int targetHeight = v.getMeasuredHeight();

    v.getLayoutParams().height = 1;
    v.setVisibility(View.VISIBLE);
    Animation a = new Animation() {
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            v.getLayoutParams().height = interpolatedTime == 1
                    ? LinearLayout.LayoutParams.WRAP_CONTENT
                    : (int) (targetHeight * interpolatedTime);
            v.requestLayout();
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    // 1dp/ms
    a.setDuration((int) ((initialHeight / v.getContext().getResources().getDisplayMetrics().density))/10);
    v.startAnimation(a);

}

The resulting animation is initially smooth but suddenly expands the view to full hight at the end

I got the code I'm using from this answer:

https://stackoverflow.com/a/13381228/5716823

Reading the comments didn't help.

Odai Mohammed
  • 279
  • 1
  • 5
  • 18

0 Answers0