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:
create a inflater:
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
inflate the child layout:
View childLayout = inflater.inflate(R.layout.child, (ViewGroup) findViewById(R.id.child_id));
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).