Не могу добавить 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);