Though I have been through many questions regarding relative layout and adding child view programatically, I am unable to resolve this issue
for (int i=0; i<views; i++) {
ImageView img = new ImageView(this);
LayoutParams img_params= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
img_params.addRule(RelativeLayout.ALIGN_PARENT_LEFT|RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
relativeLayout.addView(img, img_params);
TextView textview = new TextView(this);
LayoutParams text_params= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
text_params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT|RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
relativeLayout.addView(textview, text_params);
}
I have added log below:
06-27 11:16:38.849: E/AndroidRuntime(20595): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
You're adding the same View objects in a loop over and over. The first time the loop runs the two Views are added and they now have a parent. They cant be added again.
You'll need to instantiate new instances of those views in every iteration for this to work.
Create new instances of ImageView
and TextView
inside the loop
for (int i = 0; i < views; i++) {
LayoutParams img_params= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
img_params.addRule(RelativeLayout.ALIGN_PARENT_LEFT|RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
ImageView img = new ImageView(this);
relativeLayout.addView(img, img_params);
LayoutParams text_params= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
text_params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT|RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
TextView textview = new TextView(this);
relativeLayout.addView(textview, text_params);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.