Android 调整对话框大小时不触发surfaceChanged回调

Android 调整对话框大小时不触发surfaceChanged回调,android,android-view,android-alertdialog,Android,Android View,Android Alertdialog,我有一个简单的摄像头应用程序,我在alertdialog中使用surfaceview来显示取景器。我注意到,如果通过更改alertdialog的大小来手动调整取景器的大小,则在方向更改时不会触发surfaceChanged()回调。如果我对setlayout行进行注释,它将正常启动。我是否缺少标志或配置设置 谢谢你的意见 代码: mBuilder = new AlertDialog.Builder(mContext); mBuilder.setTitle("test dialog"); mAle

我有一个简单的摄像头应用程序,我在alertdialog中使用surfaceview来显示取景器。我注意到,如果通过更改alertdialog的大小来手动调整取景器的大小,则在方向更改时不会触发surfaceChanged()回调。如果我对setlayout行进行注释,它将正常启动。我是否缺少标志或配置设置

谢谢你的意见

代码:

mBuilder = new AlertDialog.Builder(mContext);
mBuilder.setTitle("test dialog");
mAlertDialog = mBuilder.create();

mFrameLayout = new FrameLayout(mContext);
mSurfaceView = new SurfaceView(mContext);
mFrameLayout.addView(mSurfaceView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

mAlertDialog.setView(mFrameLayout, 0, 0, 0, 0);

mSurfaceView.getHolder().addCallback(mSHcallCallback);

mAlertDialog.show();

mAlertDialog.getWindow().setLayout(200, 600);
这是在活动类之外定义的

SurfaceHolder.Callback mSHcallCallback = new SurfaceHolder.Callback() {

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        // TODO Auto-generated method stub

    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        // TODO Auto-generated method stub

    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {

        Log.d(TAG, "surface changed h:"+height+",  w:"+width);

        // TODO Auto-generated method stub

    }
};

你可以在下面的链接中找到答案