以编程方式将一个相对布局放在另一个relativelayout旁边

时间:2011-12-30 07:17:21

标签: android

我有两个相对布局,目前一个在另一个下面显示。我希望第二个布局以编程方式显示在第一个相对布局的右侧。

以下是我使用的代码。

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <RelativeLayout 
         android:layout_width="620dp"
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:id="@+id/lay1" >    
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/hello1" />
    </RelativeLayout>
    <RelativeLayout 
         android:layout_width="620dp"
         android:layout_height="wrap_content"
         android:orientation="vertical" 
         android:id="@+id/lay2">  
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/hello2" />
    </RelativeLayout>
</LinearLayout>

myAct.java

public class myAct extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LinearLayout layoutContainer = new LinearLayout(this);
        layoutContainer.setLayoutParams(new     LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

        // Arguments here: width, height, weight 
        LinearLayout.LayoutParams childLp = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1);
        RelativeLayout layoutLeft = new RelativeLayout(this);

        layoutContainer.addView(layoutLeft, childLp);
        RelativeLayout layoutRight = new RelativeLayout(this);
        layoutContainer.addView(layoutRight, childLp);
     }
}

提前致谢

3 个答案:

答案 0 :(得分:1)

将线性布局方向更改为水平。我还要将线性布局的权重总和设置为2,并为每个相对布局赋予1的权重,以确保均匀分割。

答案 1 :(得分:0)

修改代码中的这些更改,您将获得水平方向。

在main.xml中

android:layout_width="620dp"android:layout_width="wrap_content"

android:id="@+id/ll"

中添加LinearLayout

在myAct.java中

删除setContentView之后的所有语句并添加以下行

LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
ll.setOrientation(LinearLayout.HORIZONTAL);

尝试一下,如果有任何疑问问我。

答案 2 :(得分:0)

查看本文中编写的谓词或行布局代码:

Line-breaking widget layout for Android

根据您的要求更改以下行。

child.layout(xpos, ypos, xpos + childw, ypos + childh);

例如,如果您在一行中只需要2个textview,请执行类似

的操作
if((i%2) != 0)

xpos = screenWidth / 2;

else

xpos = 0;