Не могу добавить RelativeLayout программно в Android

У меня есть файл 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 программно, ниже моего "гниющего" макета. я написал некоторый код, но я не могу добавить новый макет, это мой источник

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 ответа

Решение

Создать объект вашего основного реляционного макета.

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

добавить вышеуказанный код после ll.setLayoutParams(parms);

Вы не добавляете макет в корневой вид. Вызов:

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

После этой строки:

 ll.setLayoutParams(parms);

добавил этот код:

RelativeLayout root = (RelativeLayout).findViewById(R.id.rot);
root.addView(ll);
Другие вопросы по тегам