Android programmatically include layout (i.e. without XML) Android programmatically include layout (i.e. without XML) android android

Android programmatically include layout (i.e. without XML)


I met this issue too, and I just solved it now. I think my solution is easier:

  1. create a inflater:

    LayoutInflater inflater = (LayoutInflater)      this.getSystemService(LAYOUT_INFLATER_SERVICE);
  2. inflate the child layout:

    View childLayout = inflater.inflate(R.layout.child,            (ViewGroup) findViewById(R.id.child_id));
  3. add it into parent:

    parentLayout.addView(childLayout);

It's done, enjoy it!


Personally, I'd probably write my Activity subclass to always setContentView to a layout file containing a vertical fill_parent LinearLayout containing only my title bar:-

<LinearLayout android:id="@+id/custom_titlebar_container"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">   <!--titlebar here--></LinearLayout>

Then I'd define an abstract getContentAreaLayoutId() method in CustomTitlebarActivity that returns the layout ID of the content below the titlebar for each subclass; the base onCreate() of CustomTitlebarActivity would then just call

setContentView(R.layout.custom_titlebar_activity_frame_from_above);View.inflate(this, getContentAreaLayoutId(), findViewById(R.id.custom_titlebar_container));

Alternatively, you could have your abstract method for getting the content area return a View rather than an int, giving you more flexibility to construct your views dynamically (but forcing you to inflate them yourself in the simple just dump this XML layout here case).