GLSurfaceView隐藏UI小部件

时间:2013-07-11 12:13:31

标签: android opengl-es android-camera

我将GLSurfaceView放在相机输出的顶部并绘制到它上面。我有一个包含SurfaceView和TextView的常规布局:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
    android:id="@+id/cameraPreview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<TextView
    android:id="@+id/nearest_place_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:textColor="#000"
    android:textSize="30sp"
    android:text="@string/empty"  />

</RelativeLayout>

然后我以编程方式添加GLSurfaceView:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bigarrow);
            //...
    cameraPreview = (SurfaceView) findViewById(R.id.cameraPreview);
    mGLView = new MyGLSurfaceView(this);
    addContentView(mGLView, new LayoutParams(LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT));
    previewHolder = cameraPreview.getHolder();
    previewHolder.addCallback(surfaceCallback);
    previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    nearestPubLabel = (TextView) findViewById(R.id.nearest_place_label);
    nearestPubLabel.setText(R.string.bigarrow_searching);
    nearestPubLabel.setVisibility(View.VISIBLE);//clutching at straws

}

除了屏幕的一小块区域外,GLSurfaceView是透明的,我可以看到它下方的相机预览。但是我的TextView不可见。当我使用常规视图进行此设置时,TextView是可见的。

1 个答案:

答案 0 :(得分:0)

我切换到从XML加载GLSurfaceView而不是使用addContentView,现在可以看到TextView。不解释以前的方法有什么问题,但我现在很高兴。