Home » Android » android – How to create Clone-Duplicate View?

android – How to create Clone-Duplicate View?

Posted by: admin June 15, 2020 Leave a comment

Questions:

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…

How to&Answers:

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);