Shaishav Jogani
Shaishav Jogani

Reputation: 2121

How to create Clone-Duplicate View?

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

Answers (2)

Sadwyn
Sadwyn

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

Numan1617
Numan1617

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

Related Questions