2013-02-10 85 views
0

我有一个水平线性布局作为我的布局文件中的根元素。线性布局包含两个相对布局,每个布局都有几个子元素。我怎样才能交换这两个相对布局的位置?在运行时重新排序android线性布局?

我试图

ViewGroup vg = (ViewGroup)findViewById(R.id.horizontalLayout); 
RelativeLayout rl1 = (RelativeLayout)findViewById(R.id.panelLayout); 
RelativeLayout rl2 = (RelativeLayout)findViewById(R.id.boardLayout); 
vg.removeAllViews(); 
vg.addView(rl2); 
vg.addView(rl1); 

我还试图

vg.removeView(rl2); 
vg.addView(rl2, 0); 

两个结果在第二相对布局(RL2)占用的整个宽度。如果需要,我可以发布我的xml文件,但它很长。此外,两个相对布局的height = match_parent和width = wrap_content。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/horizontalLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<RelativeLayout 
    android:id="@+id/panelLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="@string/next" /> 

    <com.mydomain.tetrisv2.PreviewGridView 
     android:id="@+id/previewGridView1" 
     android:layout_width="100dp" 
     android:layout_height="150dp" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/textView1" /> 

    <TextView 
     android:id="@+id/txtScore" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/previewGridView1" 
     android:text="Score: 0" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="@string/pausestr" 
     android:onClick="btnPause_Click" /> 

    <TextView 
     android:id="@+id/lblPaused" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/txtScore" 
     android:layout_marginTop="20dp" 
     android:text="@string/pausedstr" 
     android:visibility="gone" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button1" 
     android:layout_alignRight="@+id/previewGridView1" 
     android:layout_marginBottom="41dp" 
     android:text="@string/savestr" 
     android:onClick="btnSave_Click" /> 

</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/boardLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" > 

    <com.mydomain.tetrisv2.GridView 
     android:id="@+id/gridView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <ImageButton 
     android:id="@+id/btnDrop" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:src="@drawable/downarrow" 
     android:background="@null" 
     android:onClick="btnDrop_Click" /> 

    <ImageButton 
     android:id="@+id/btnLeft" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:src="@drawable/leftarrow" 
     android:background="@null" 
     android:onClick="btnLeft_Click" /> 

    <ImageButton 
     android:id="@+id/btnRight" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/rightarrow" 
     android:background="@null" 
     android:onClick="btnRight_Click" /> 

</RelativeLayout> 

</LinearLayout> 
+0

使用层次结构视图来帮助您确定您的方法出错的位置。没有布局文件,任何人都很难帮助你。你的代码看起来很好。 – CommonsWare 2013-02-10 23:36:06

+0

以为我描述了我的布局文件,至少是最重要的部分,但我想你是正确的病后文件。 – user1938939 2013-02-10 23:40:13

回答

0

尝试切换到的addView()一个味道,需要LayoutParams作为第二值,并提供您当前在XML设定值(“HEIGHT = match_parent和宽度= WRAP_CONTENT”)相匹配的LinearLayout.LayoutParams

+0

刚刚尝试过相同的结果。 – user1938939 2013-02-10 23:50:31

+0

@ user1938939:嗯......我回到层次结构视图的建议,因为它应该帮助识别没有得到正确的'LayoutParams'值。 – CommonsWare 2013-02-10 23:52:46

+0

现在看看它。非常有趣的不知道这个工具存在,我很新的android – user1938939 2013-02-11 18:45:27