我的Android应用程序中有这种布局(我将它用作启动画面和主菜单屏幕。
这是XML
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.izzivizzi.avant2go.ACMainActivity"
android:background="@mipmap/wallpaper"
android:orientation="vertical"
android:animateLayoutChanges="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
...................
</RelativeLayout>
<LinearLayout
android:id="@+id/mainMenuButtons"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:layout_marginTop="@dimen/margin_middle"
android:orientation="vertical"
android:visibility="gone">
...................
</LinearLayout>
</LinearLayout>
它应该做什么
首次启动Activity时,只显示RelativeLayout的权重为1,这意味着子项显示在屏幕中间(它是一个文本视图和一些图像,但我认为&#39 ;这里的冗余信息)。
几秒钟后,LinearLayout的可见性设置为VISIBLE,权重为2,这意味着它将顶层RelativeLayout推高。
现在,由于主要的LinearLayout的animateLayoutChanges设置为true,我期待RelativeLayout的孩子将动画到他们的新位置(朝向屏幕顶部)并且新的LinearLayout元素将慢慢地出现。
嗯,LinearLayout确实缓慢出现,但RelativeLayout的孩子只是闪烁,因为RelativeLayout位置实际上并没有改变,只是改变了它的高度。
问题
现在,由于RelativeLayout的孩子只是眨眼而不是动画,我需要找到一种方法将它设置为顶部,同时LinearLayout慢慢显示。
我将非常感谢这个问题的解决方案。谢谢!
答案 0 :(得分:0)
为什么不在代码中添加线性布局,而不是切换可见性?
您可以将其保留在布局文件中,只需获取对它的引用:然后在运行几秒后将其删除,然后将其添加回来(确保使用具有权重设置的适当布局参数)。