Reputation: 2121
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...
Upvotes: 10
Views: 21635
Reputation: 1
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)
;
Upvotes: -1
Reputation: 1168
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);
}
Upvotes: 16