的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))
);
}
数据第一次:
个数据显示的第二次崩溃的观点后:
任何想法,为什么会出现这种情况?谢谢大家的时间!
答
我已经经历过其中动画不正确的前及在View
动画的状态后,“补”像这样类似的问题。我不知道这是否会解决您发出准确,但要尽量实现这样一个类似的解决方案:
的想法是,你应该设置View
的前状态开始之前的动画,然后在onAnimationEnd(Animator)
在对象上设置动画的后期状态。启动动画之前,因为你想要的View
已经
- 移动
setVisibility(View.VISIBLE)
:因此,例如,在你的节目的动画(当showRowDetails
是true
),试试这个: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();
注意的几件事情在这里是可见的,所以你可以看到实际发生的动画。
- 开始动画之前设置
View
的前的状态。 - 在
onAnimationEnd()
设置View
的状态后。 - 删除
super.onAnimationEnd(animator)
,这是不需要的。
我希望这个解释是有道理的。我的确切解决方案可能无法立即生效,但这个想法应该是一样的。你需要四处游玩,看看它是否适合你。希望这可以帮助!
你忘了叫'开始()'结尾。 –
@布莱恩这是非常奇怪的,即使是我'现在在第二个水龙头我做了这些变化我可以看到内容滑出线性布局和消失 – Alphonse
啊我也看到过这个类似的问题之前,永远不明白为什么Android动画有时候很头疼!您是否也对隐藏动画实施了前期变更和变更后更改? – Brian