如何在运行时更改视图的位置?

时间:2014-05-22 06:22:27

标签: android android-layout layout

我有以下xml布局

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/MainBottomBarLayout"
    android:layout_alignParentBottom="true"
    android:gravity="bottom"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="4dp"
    android:clipChildren="false"
    android:clipToPadding="false" >


   <RelativeLayout
            android:id="@+id/friendsbar_layout"
            android:layout_width="match_parent"
            android:layout_height="260dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="130dp"
            android:layout_marginRight="5dp"
            android:visibility="gone" >



            <include
                android:id="@+id/tooltipFriends"
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:layout_above="@+id/friendsonlineLayout"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="-20dp"
                layout="@layout/tooltip_friends"
                android:visibility="gone" />


        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/friendsbar_layout_ls"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="70dp"
            android:layout_marginRight="5dp"
            android:visibility="gone" >



            <include
                android:id="@+id/tooltipFriends_ls"
                android:layout_width="290dp"
                android:layout_height="wrap_content"
                android:layout_above="@+id/friendsonlineLayout"
                android:layout_alignParentRight="true"
                android:layout_marginBottom="-20dp"
                layout="@layout/tooltip_friends"
                android:visibility="gone" />

        </RelativeLayout>

</RelativeLayout>

我想删除tooltipFriends_ls视图并将其替换为tooltipFriends,这将改变其在方向更改方面的位置:

当屏幕方向为纵向时,

tooltipFriends将处于当前位置

当屏幕方向为横向时,

tooltipFriends将处于tooltipFriends_ls位置

如何将内部视图移动为另一个视图的兄弟?

1 个答案:

答案 0 :(得分:0)

我建议采用不同的方法,为名为layout-land的布局创建一个额外的文件夹,然后在匹配的文件夹中查找具有指定名称的布局(例如在setContentView调用中)取向。

这样,您可以为同一活动设置两种不同的布局,具体取决于方向。请记住,在方向更改时,您必须保存视图状态以保持用户输入(如文本)。

更新: 如果您仍想移动视图,请在正确的位置放置两个容器,例如R.id.containerR.id.container2,当您想要将视图从一个移动到另一个时,您可以执行以下操作:

View view = findViewById(R.id.viewtobemoved); //The view
ViewGroup container2 = (ViewGroup) findViewById(R.id.container2); //The new container
((ViewGroup)view.getParent()).removeView(view);  //Remove from current parent
container2.addView(view) //Insert in the new container