Unfortunately I can't answer your question directly (as to why), but I struggled for sometime getting a stable implementation whereby the AR data was always on top of the camera, especially whilst toggling the camera preview on and off.
I always implemented this in code, not using a layout as follows;
In the main activity onCreate method, in this order;
Create the CameraPreview.
Create the SurfaceView (with renderer)
In the CameraPreview constructor;
RelativeLayout tmpLayout = new RelativeLayout( appContext );
tmpLayout.addView(this, 0,
new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT)
);
activity.setContentView(tmpLayout);
In the SurfaceView constructor;
setEGLContextClientVersion(2);
setEGLConfigChooser(new AAConfigChooser(this, true));
getHolder().setFormat(PixelFormat.TRANSLUCENT);
// Setup the renderer
mRenderer = new JpctRenderer( mainARView.orientationListener.tabletMode );
Activity activity = (Activity)mainARView.appContext;
// Add this view to the main activity
setZOrderMediaOverlay(true);
activity.addContentView(this, new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
If you want a UI on-top of both, do this in the main activity after creating the SurfaceView;
uiScreen = new UserInterfaceView(this);
addContentView(uiScreen, fillLayout);
In onResume;
camScreen.start();
augScreen.setVisibility(View.VISIBLE);
augScreen.onResume();
In onPause;
augScreen.setVisibility(View.INVISIBLE);
augScreen.onPause();
camScreen.stop();
Hope this helps.
M