小编vid*_*uka的帖子

对话框后面的背景模糊

我希望对话框在其下具有模糊的屏幕,因此我对活动进行“截屏”,对其进行模糊处理并将其设置为BitmapDrawable作为对话框窗口的背景。奇怪的是,即使调用setCanceledOnTouchOutside(true),对话框也不再位于屏幕中央,并且触摸外部对话框也不会关闭对话框。

问题是:为什么这不起作用?如何分别创建背景模糊的对话框?

public class BlurDialog extends DialogFragment {

public BlurDialog() {
}

public static BlurDialog newInstance() {
    return new BlurDialog();
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final AlertDialog alertDialog = new AlertDialog.Builder(getActivity())
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("OK", null)
            .setNegativeButton("Cancel", null)
            .create();
    alertDialog.setCanceledOnTouchOutside(true);


    View view = getActivity().getWindow().getDecorView();
    view.setDrawingCacheEnabled(true);
    Bitmap b1 = view.getDrawingCache();

    Rect frame = new Rect();
    getActivity().getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
    int statusBarHeight = frame.top;
    final int width = getActivity().getWindow().getDecorView().getWidth();
    final int height = getActivity().getWindow().getDecorView().getHeight();

    Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height-statusBarHeight);

    //define this …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-dialogfragment

5
推荐指数
1
解决办法
3315
查看次数