2017-10-16 104 views
1

後,我使用的是動畫的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

任何想法,爲什麼會出現這種情況?謝謝大家的時間!

回答

1

我已經經歷過其中動畫不正確的前及在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