构建到较低 OS 版本时如何修复对话框变形?

How fix dialog deformations when build to a lower OS version?

我是 运行 我的 android 应用程序在我的 android phone 这是 OS 8.1 奥利奥,对话似乎没有问题,但是当我 install/build 到其他 phone 即 android 棒棒糖时,对话变形为原始大小。

见下图。

Please click for the image (Error design deform)

对话源代码

 final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.dialogue_dash_date_picker);

        final Spinner spinner = dialog.findViewById(R.id.typeViewSpinner);
        Button btnDismiss = dialog.findViewById(R.id.btnOK);
        String viewType = ViewTypeSingleton.getInstance().getTypeview();
        if (viewType.equals(""))
            spinner.setSelection(0);
        else if (viewType.equals("Day"))
            spinner.setSelection(1);
        else if (viewType.equals("Week"))
            spinner.setSelection(2);
        else if (viewType.equals("Month"))
            spinner.setSelection(3);
        else if (viewType.equals("Year"))
            spinner.setSelection(4);
        else if (viewType.equals("All"))
            spinner.setSelection(5);

        btnDismiss.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
                String choosen = spinner.getSelectedItem().toString();
                ViewTypeSingleton.getInstance().setTypeview(choosen);
                message.success(""+choosen,context);
                fragmentRedirection(new fragment_main());
            }
        });
        dialog.create();
        dialog.show();

请帮我解决这个问题。

谢谢

将此样式添加到您的 style.xml

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">

    <item name="android:windowBackground">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>

</style>

然后像这样创建对话框

 final Dialog dialog = new Dialog(context, R.style.MyDialogTheme);

请尝试使用以下方式设置对话框的高度和宽度:

Dialog dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.YOUR_LAYOUT);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialog.getWindow().setAttributes(lp);
dialog.show();