无法在android中以编程方式添加RelativeLayout

时间:2014-11-11 12:27:42

标签: android android-activity android-relativelayout

我有一些xml布局文件。这是我的xml布局源代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<RelativeLayout
    android:id="@+id/rot"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="#ff0000" >

    <ImageView
        android:id="@+id/btn_categorry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="12dp"
        android:background="@drawable/ic_launcher" />
</RelativeLayout>

我尝试以编程方式添加新的RelativeLayout,而不是我的'rot&#39; layout.i写了一些代码,但我无法添加新的布局,这是我的源代码

img.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.FILL_PARENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
            final RelativeLayout ll = new RelativeLayout(
                    getApplicationContext());

            Button add_btn = new Button(getApplicationContext());
            add_btn.setText("Click to add TextViiews and EditTexts");
            ll.addView(add_btn);

            parms.addRule(RelativeLayout.BELOW, R.id.rot);
            ll.setLayoutParams(parms);
        }
    });

正如我所说,我无法添加布局。我做错了什么?如果有人知道解决方案,请帮助我 感谢

3 个答案:

答案 0 :(得分:1)

您没有将布局添加到根视图中。拨打:

((ViewGroup)findViewById(R.id.rot)).addView(ll);

答案 1 :(得分:0)

这一行之后:

 ll.setLayoutParams(parms);

添加了此代码:

RelativeLayout root = (RelativeLayout).findViewById(R.id.rot);
root.addView(ll);

答案 2 :(得分:0)

创建主要相对布局的对象。

       RelativeLayout main = (RelativeLayout)findViewById(R.id.mainRelativeLayout);
       main.addView(ll);

在ll.setLayoutParams(parms);

之后添加上面的代码