如何在android中以编程方式创建Hierarchical RelativeLayouts?

时间:2013-06-24 09:58:03

标签: android android-layout relativelayout

我是android的新手,我已经为这个问题做了很多谷歌搜索。其实我想在Android的代码中创建UI:

<RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/tab_background">

       <RelativeLayout
            android:id="@+id/event_1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/color_001">

        <TextView
            android:id="@+id/txt_event_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_margin="1dp"
            android:gravity="center"
            android:text="j1"
            android:textStyle="bold"
            android:textColor="#ffffff" />
        </RelativeLayout>  
</RelativeLayout>  

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

使用此代码。

RelativeLayout layout1= new RelativeLayout(this);
LayoutParams param1= new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

RelativeLayout layout2= new RelativeLayout(this);
LayoutParams param2= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

TextView text= new TextView(this);
text.setText("your text");
layout2.addView(text, param2);

layout1.addView(layout2, param1);
setContentView(layout1);

答案 1 :(得分:1)

    RelativeLayout.LayoutParams childVw = new RelativeLayout.LayoutParams(40, 40);
    TextView textVw = new TextView(this);
    textVw.setLayoutParams(childVw);

然后将其添加到您的主要相对布局

答案 2 :(得分:1)

我已根据您的xml布局编写了一个快速示例代码。我尝试通过使用注释来说清楚,但如果你不理解某些内容,我可以尝试再解释一下。

// Creating the outer RelativeLayout which has id "relativeLayout2" in your xml layout.
RelativeLayout outerRelativeLayout = new RelativeLayout(context);

// ------------------------------------------------------------------

// Creating the inner RelativeLayout which has id "event_1" in your xml layout.
RelativeLayout innerRelativeLayout = new RelativeLayout(context);

// Creating the TextView which has id "txt_event_1" in your xml layout.
TextView textView = new TextView(context);
textView.setGravity(Gravity.CENTER);
textView.setText("j1");

// Defining the layout parameters of the TextView
RelativeLayout.LayoutParams textViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textViewParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
textViewParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);

// Adding the TextView to the inner RelativeLayout as a child
innerRelativeLayout.addView(textView, new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

// ------------------------------------------------------------------

// Adding the inner RelativeLayout to the outer RelativeLayout as a child
outerRelativeLayout.addView(innerRelativeLayout, new RelativeLayout.LayoutParams(convertDptoPx(40), convertDptoPx(40)));

// ------------------------------------------------------------------

// Defining the layout parameters of the outer RelativeLayout
RelativeLayout.LayoutParams rootParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
rootParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);

// Set the layout parameters associated with the outer RelativeLayout.
outerRelativeLayout.setLayoutParams(rootParams);

虽然此代码段不包含xml布局中定义的某些xml属性,但您可以在视图文档中找到相关方法。

例如,如果查看TextView文档(http://developer.android.com/reference/android/widget/TextView.html),可以看到“XML Attributes”表,其中显示了属性名称和相关方法。

答案 3 :(得分:1)

 setContentView(R.layout.layoutfilename);


    RelativeLayout layout1= (RelativeLayout)findViewById(R.id.yourlayoutid);
    LayoutParams param1= new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

    RelativeLayout layout2= new RelativeLayout(this);
    LayoutParams param2= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

    TextView text= new TextView(this);
    text.setText("your text");
    layout2.addView(text, param2);


    layout1.addView(layout2);