这是activity.xml,content_my.xml是RelativeLayout,menu.xml是LinearLayout。顶部和菜单布局(LinearLayout)下的内容布局(RelativeLayout)我想移动屏幕左侧的相对布局(内容布局)并访问它下面的菜单布局。内容布局位于动画菜单布局的顶部,无法访问菜单。在contentlayout中,我添加了ListView。请帮我告诉我如何在动画后永久移动RelativeLayout。
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.bwd.demo.mybrand.My">
<include layout="@layout/menu" />
<include layout="@layout/content_my" />
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:0)
在content_my.xml中,您必须为RelativeLayout指定一个ID:
android:id="@+id/rl_content"
然后在您的Activity中使用Java代码转换xml,以便您可以使用它:
RelativeLayout rl_content = (RelativeLayout) findViewById(R.id.rl_content);
现在有多种选项可以为它设置动画。 由于你想访问布局下面的东西,我建议 使用ViewPropertyAnimator,然后您可以使用一行。
最小的实现看起来像这样:
rl_content.animate().translationX(0); // -> animates **TO** 0 on the X axis
会将布局的左边框移动到屏幕的左侧。如果你想要更进一步,那么你需要一个负值。
或者你可以使用translationXBy()方法f.e. :
rl_content.animate().translationXBy(-50); // -> animates **BY** -50 on the X axis
//(negative values are to the left)
同样有趣:
TranslateAnimation - &gt;在你的情况下不推荐,因为它没有真正移动布局,只是让它看起来像移动,所以你将无法访问RelativeLayout下的菜单。