问题描述:
在开发过程中有时候会遇到这样的需求:在同一个布局文件中有两个元素A、B,他们有时候A在上面,有时候B要在上面,如果A、B都是代码new出来的,或者在单独的xml文件里则比较简单,直接在代码里按照需要的顺序add进去就行了,但是我们现在不想那么麻烦把A、B单独拆分出来,只想改变A、B在xml文件里的顺序要如何做呢?
解决思路:
将布局文件里的A(id:view_a)、B(id:view_b)元素放到一个新的容器里,比如LinearLayout,给它设置一个id(比如叫:parent),然后在代码里通过id引用这三个View:mViewA,mViewB,mViewParent。在需要改变A、B顺序的时候,先把mViewParent里的元素全部清除掉(removaAllViews),然后按照需要的顺序重新把mViewA,mViewB添加到mViewParent里,这样就达到我们想要的效果了
代码实现:
原布局文件伪代码:
<LinearLayout
android:orientation="vertical">
<TextView android:id="@+id/view_a"/>
<TextView android:id="@+id/view_b"/>
</LieanrLayout>
修改后布局文件伪代码:
<LinearLayout
android:orientation="vertical">
<LinearLayout android:id="@+id/parent"
android:orientation="vertical">
<TextView android:id="@+id/view_a"/>
<TextView android:id="@+id/view_b"/>
</LinearLayout>
</LieanrLayout>
java伪代码:
private TextView mViewA;
private TextView mViewB;
private LiearLayout mViewParent;
{
//将B动态的放到A的上面
mViewParent.removeAllViews();
mViewParent.add(mViewB);
mViewParent.add(mViewA);
}