In my android application, I want to create duplicate ImageButton
of already created Imagebutton
.
I want to create new Imagebutton
programmatically having same widht, height, background, image src, margins etc. of already created button in XML file. In short, I want to create duplicate ImageButton
.
I have try this
ImageButton mImageButton = (ImageButton) findViewById(R.id.ib);
Imagebutton duplicate = mImageButton;
But it only refer to the the mImageButton
. So, change in duplicate
also cause change in mImageButton
.
Please help me out. Thank you…
You cannot clone views, the way to do it is to create your View each time.
You could always inflate the view multiple times from an XML or create a function to create the view programatically.
Inflation:
private void addImageButton(ViewGroup viewGroup) {
View v = LayoutInflater.from(this).inflate(R.layout.ib, null);
viewGroup.addView(v);
}
Programatically:
private void addImageButton(ViewGroup viewGroup) {
ImageButton imageButton = new ImageButton(context);
viewGroup.addView(imageButton);
}
Answer:
Also be sure that you set unique id for each new clonned view.
Otherwise you can get this error :
java.lang.IllegalStateException: The specified child already has a
parent.
You must call removeView()
on the child’s parent first.
view.setId(int id)
;
Tags: androidandroid, view