我有以下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
位置
如何将内部视图移动为另一个视图的兄弟?
答案 0 :(得分:0)
我建议采用不同的方法,为名为layout-land
的布局创建一个额外的文件夹,然后在匹配的文件夹中查找具有指定名称的布局(例如在setContentView
调用中)取向。
这样,您可以为同一活动设置两种不同的布局,具体取决于方向。请记住,在方向更改时,您必须保存视图状态以保持用户输入(如文本)。
更新:
如果您仍想移动视图,请在正确的位置放置两个容器,例如R.id.container
和R.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