调整对话框大小时,surfaceChanged回调未触发

时间:2014-06-09 12:18:56

标签: android android-view android-alertdialog

我有一个简单的相机应用程序,我在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

    }
};

1 个答案:

答案 0 :(得分:0)

相关问题