The basic layout of each action is FrameLayout . This means that the layout you usually set using setContentView() is a child of this layout. addContentView() only adds one more child, so it behaves like a FrameLayout (which means that it adds new user interface elements above the existing ones).
You can verify this using the hierachyviewer tool from the ANDROID_SDK\tools folder. Here are two screenshots:

This is the layout before calling addContentView() , my activity consists of the default FrameLayout holding the LinearLayout with a button (my layout is here). This is shown on the bottom line, and the rest of the items are the title / status bar.

After adding a TextView via addContentView() it looks like this. You can see that the base FrameLayout received a new child.
user658042 Apr 02 '12 at 16:16 2012-04-02 16:16
source share