Stuyvenstein
Stuyvenstein

Reputation: 2447

Create views programmatically using XML on Android

I want to create a UI layout in XML and have it inserted as a child into an existing view (It will be inserted multiple times).

For example, here is what the XML file will contain:

<RelativeLayout
    android:id="@+id/relativeLayout1" >
    <Button android:id="@+id/myButton"
        android:text="@string/mystring" />
</RelativeLayout>

Now I get the parent LinearLayout and now want to add that XML file as a child view, e.g:

LinearLayout linear = (LinearLayout) findViewById(R.id.myLayout);

// need to create a view object from the xml file
linear.addView(myXmlObject);

Is it possible to convert an XML resource to a view type? If so, how would I do this?

Upvotes: 38

Views: 34295

Answers (1)

Sam
Sam

Reputation: 86948

I believe you want the LayoutInflater. Let's say your example XML is in a file custom_layout.xml:

LayoutInflater inflater = LayoutInflater.from(context);
RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.custom_layout, null, false);

LinearLayout linear = (LinearLayout)findViewById(R.id.myLayout);
linear.addView(layout);

Upvotes: 102

Related Questions