的LinearLayout动画没有显示从布局中的数据第二次使用

问题描述:

后,我使用的是动画的LinearLayout中,但我显示数据从布局内第二次后其内容就不会显示。的LinearLayout动画没有显示从布局中的数据第二次使用

我的XML:

<?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="horizontal"> 

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

     <android.support.v7.widget.CardView 
      android:id="@+id/invoiceCardView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="5dp"> 

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

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal"> 

        <LinearLayout 
         android:layout_width="0dp" 
         android:layout_height="match_parent" 
         android:layout_weight="0.1" 
         android:gravity="center_vertical" 
         android:orientation="vertical"> 

         <com.rey.material.widget.CheckBox 
          android:id="@+id/selectInvoice" 
          style="@style/Material.Drawable.CheckBox" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_weight="0.33" 
         android:orientation="vertical"> 

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

          <TextView 
           android:id="@+id/invoiceId" 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:text="#00000003" 
           android:textColor="#5d9cec" 
           android:textSize="18sp" /> 
         </LinearLayout> 

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

          <TextView 
           android:id="@+id/invoiceStatus" 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:layout_weight="0.37" 
           android:background="#26C6DA" 
           android:gravity="center" 
           android:text="active" 
           android:textColor="@android:color/white" 
           android:textStyle="bold" /> 

         </LinearLayout> 

        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center" 
         android:layout_weight="0.25" 
         android:gravity="center_vertical" 
         android:orientation="vertical"> 

         <TextView 
          android:id="@+id/invoiceAmount" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:gravity="center" 
          android:text="$ 222,064.00" 
          android:textSize="16sp" 
          android:textStyle="bold" /> 
        </LinearLayout> 

        <LinearLayout 
         android:layout_width="0dp" 
         android:layout_height="match_parent" 
         android:layout_gravity="center" 
         android:layout_weight="0.1" 
         android:gravity="center_vertical" 
         android:orientation="vertical"> 

         <com.mikepenz.iconics.view.IconicsImageView 
          android:id="@+id/showDetailsArrow" 
          android:layout_width="20dp" 
          android:layout_height="20dp" 
          android:layout_gravity="center" 
          app:iiv_color="@color/colorGrey" 
          app:iiv_icon="faw-angle-down" /> 
        </LinearLayout> 
       </LinearLayout> 

       <LinearLayout 
        android:id="@+id/invoiceDetails" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:visibility="gone"> 

        <TableLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="10dp" 
         android:layout_marginRight="10dp"> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          android:layout_marginTop="5dp" 
          android:background="@color/appBlack"> 

          <TextView 
           android:id="@+id/textView12" 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:text="Details" 
           android:textColor="@android:color/white" 
           android:textSize="16sp" 
           android:textStyle="bold" /> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Date Sent" 
           android:textColor="@color/colorGrey" /> 

          <TextView 
           android:id="@+id/dateSent" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="right" 
           android:text="7/27/2017" 
           android:textStyle="bold" /> 

         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:id="@+id/textView18" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Date Paid" 
           android:textColor="@color/colorGrey" /> 

          <TextView 
           android:id="@+id/datePaid" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="right" 
           android:text="7/27/2017" 
           android:textStyle="bold" /> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:id="@+id/textView21" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Days Past Due" 
           android:textColor="@color/colorGrey" /> 

          <LinearLayout 
           android:layout_width="0dp" 
           android:layout_height="match_parent" 
           android:layout_weight="1" 
           android:gravity="right|center_vertical" 
           android:orientation="vertical"> 

           <TextView 
            android:id="@+id/daysPastDue" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:background="#f00000" 
            android:paddingLeft="10dp" 
            android:paddingRight="10dp" 
            android:text="70 days" 
            android:textColor="@android:color/white" 
            android:textStyle="bold" /> 
          </LinearLayout> 

         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="@string/name" 
           android:textColor="@color/colorGrey" /> 

          <TextView 
           android:id="@+id/name" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="right" 
           android:text="Test" 
           android:textStyle="bold" /> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Email" 
           android:textColor="@color/colorGrey" /> 

          <HorizontalScrollView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_gravity="center_vertical|center_horizontal" 
           android:layout_weight="1" 
           android:fillViewport="true"> 

           <LinearLayout 
            android:layout_width="wrap_content" 
            android:layout_height="match_parent" 
            android:orientation="horizontal"> 

            <TextView 
             android:id="@+id/email" 
             android:layout_width="0dp" 
             android:layout_height="wrap_content" 
             android:layout_weight="1" 
             android:gravity="right" 
             android:text="[email protected]" 
             android:textStyle="bold" /> 
           </LinearLayout> 
          </HorizontalScrollView> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Balance" 
           android:textColor="@color/colorGrey" /> 

          <TextView 
           android:id="@+id/balance" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="right" 
           android:text="$ 420.00" 
           android:textStyle="bold" /> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Preview" 
           android:textColor="@color/colorGrey" /> 

          <TextView 
           android:id="@+id/balance" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:gravity="right" 
           android:text="View" 
           android:textColor="#5d9cec" /> 
         </TableRow> 

         <TableRow 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          android:layout_marginTop="5dp" 
          android:gravity="center_vertical"> 

          <TextView 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="0.5" 
           android:gravity="left" 
           android:paddingBottom="5dp" 
           android:paddingTop="5dp" 
           android:text="Actions" 
           android:textColor="@color/colorGrey" /> 

          <fr.ganfra.materialspinner.MaterialSpinner 
           android:id="@+id/actions" 
           android:layout_width="0dp" 
           android:layout_height="wrap_content" 
           android:layout_weight="1" 
           android:textColor="@color/colorGrey" 
           android:textStyle="bold" 
           app:ms_arrowColor="@color/colorGrey" 
           app:ms_enableFloatingLabel="false" 
           app:ms_hint="Select Action" 
           app:ms_hintColor="@color/colorGrey" 
           app:ms_hintTextSize="14sp" /> 

         </TableRow> 

        </TableLayout> 
       </LinearLayout> 

      </LinearLayout> 

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

    </LinearLayout> 

</LinearLayout> 

的Java:

//variable declaration  
private boolean showRowDetails = false; 
showRowDetails = !showRowDetails; 
final LinearLayout invoiceDetails = (LinearLayout) view.findViewById(R.id.invoiceDetails); 
invoiceDetails.setAlpha(0.0f); 
IconicsImageView showDetailsArrow = (IconicsImageView) view.findViewById(R.id.showDetailsArrow); 
if(showRowDetails){ 
    invoiceDetails.animate() 
      .translationY(invoiceDetails.getHeight()) 
      .alpha(1.0f) 
      .setDuration(800) 
      .setListener(new AnimatorListenerAdapter() { 
       @Override 
       public void onAnimationEnd(Animator animation) { 
        super.onAnimationEnd(animation); 
        invoiceDetails.setVisibility(View.VISIBLE); 
       } 
      }); 
    showDetailsArrow.setImageDrawable(
      new IconicsDrawable(context) 
        .icon("faw-angle-up") 
        .color(ContextCompat.getColor(context, R.color.colorGrey)) 
    ); 
} 
else { 
    invoiceDetails.animate() 
      .translationY(0) 
      .alpha(0.0f) 
      .setDuration(800) 
      .setListener(new AnimatorListenerAdapter() { 
       @Override 
       public void onAnimationEnd(Animator animation) { 
        super.onAnimationEnd(animation); 
        invoiceDetails.setVisibility(View.GONE); 
       } 
      }); 
    showDetailsArrow.setImageDrawable(
      new IconicsDrawable(context) 
        .icon("faw-angle-down") 
        .color(ContextCompat.getColor(context, R.color.colorGrey)) 
    ); 
} 

隐藏数据:显示 hidden data

数据第一次:

enter image description here

数据显示的第二次崩溃的观点后:

enter image description here

任何想法,为什么会出现这种情况?谢谢大家的时间!

我已经经历过其中动画不正确的前及在View动画的状态后,“补”像这样类似的问题。我不知道这是否会解决您发出准确,但要尽量实现这样一个类似的解决方案:

的想法是,你应该设置View的前状态开始之前的动画,然后在onAnimationEnd(Animator)在对象上设置动画的后期状态。启动动画之前,因为你想要的View已经

  1. 移动setVisibility(View.VISIBLE):因此,例如,在你的节目的动画(当showRowDetailstrue),试试这个:

    invoiceDetails.setAlpha(0.0f); 
    invoiceDetails.setTranslationY(0); 
    invoiceDetails.setVisibility(View.VISIBLE); 
    final int height = invoiceDetails.getHeight(); 
    invoiceDetails.animate() 
        .translationY(height) 
        .alpha(1.0f) 
        .setDuration(800) 
        .setListener(new AnimatorListenerAdapter() { 
         @Override 
         public void onAnimationEnd(Animator animation) { 
          invoiceDetails.setAlpha(1.0f); 
          invoiceDetails.setTranslationY(height); 
         } 
        }).start(); 
    

    注意的几件事情在这里是可见的,所以你可以看到实际发生的动画。

  2. 开始动画之前设置View的前的状态。
  3. onAnimationEnd()设置View的状态后。
  4. 删除super.onAnimationEnd(animator),这是不需要的。

我希望这个解释是有道理的。我的确切解决方案可能无法立即生效,但这个想法应该是一样的。你需要四处游玩,看看它是否适合你。希望这可以帮助!

+0

你忘了叫'开始()'结尾。 –

+0

@布莱恩这是非常奇怪的,即使是我'现在在第二个水龙头我做了这些变化我可以看到内容滑出线性布局和消失 – Alphonse

+0

啊我也看到过这个类似的问题之前,永远不明白为什么Android动画有时候很头疼!您是否也对隐藏动画实施了前期变更和变更后更改? – Brian