【发布时间】:2016-04-21 15:47:24
【问题描述】:
假设您有一个高度设置为wrap_content 的父级相对布局。此布局内部是另一个默认隐藏的布局。这就是我揭示它的方式:
view.startAnimation(AnimationUtils.loadAnimation(context, R.anim.translate_in));
view.setVisibility(View.VISIBLE);
这里是对应的动画文件。它基本上将视图从底部移动到顶部。
<translate
android:duration="250"
android:fromXDelta="0"
android:fromYDelta="100%p"
android:toXDelta="0"
android:toYDelta="0"
android:fillAfter="true"/>
我希望父视图根据子视图的动画来改变它的高度。但是,当动画开始时,父视图会立即向上移动,而子视图仍在动画中。感觉就像在动画完成之前调用了 setVisibility。
所以为了解决这个问题,我会将孩子的身高从 0% 缩放到 100%,但是我不想要缩放效果,而是想要平移效果。
任何想法如何解决这个问题?
布局简单:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundColor="@color/grey">
<TextView/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundColor="@color/white"
android:visibility="GONE">
<TextView/>
</RelativeLayout>
</RelativeLayout>
【问题讨论】:
-
这听起来像是“隐藏”,你的意思是
GONE,在这种情况下,父母的布局就像孩子不在那里一样,最初的高度是0,但很快当您将孩子设置为VISIBLE时,父母会包裹孩子的实际高度,并“立即向上移动”。是吗? -
@MikeM。布局真的没有什么特别的。查看我的编辑。