警告对话框背景主题/颜色

8
我希望设置AlertDialogue的主题或更改背景颜色。 虽然我知道它有一个默认的主题,但在不同的版本中,我得到的主题是不同的,所以我想为所有版本都修复它。 或者简单地将背景颜色更改为白色。
 @NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final SimpleAdapter adapter = new SimpleAdapter(getContext(), imagesWithNames, R.layout.lib_dialog_image,
                new String[]{"name", "imageID","Spacing"}, new int[]{R.id.text1, R.id.image1,R.id.spacing});
        return new AlertDialog.Builder(getContext()).setAdapter(adapter,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        ((PlaceCallActivity) getContext()).OnSelected(WithNamesFragment.this.getClass(), (int) ((HashMap<String, Object>) adapter.getItem(i)).get("imageID"));
                    }
                }).setCancelable(true).setTitle("PICK YOUR AVATAR").setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).create();
    }

请不要贴出你的代码,请告诉我在这里应该做哪些更改。
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));

注意:上述代码可以实现,但我想知道在哪里设置AlertDialogue的样式。

图片描述信息


在您的values/styles.xml文件中,创建一个名为“AlertDialogCustom”的新样式。 - tahsinRupam
1
你还在寻找解决方案吗? - Charuක
是的,我还没有找到一个! - SamH67
参考这个链接:https://dev59.com/6nE95IYBdhLWcg3wKq2q - Anand Savjani
2个回答

18

请按照以下方式在您的styles.xml文件中创建自己的样式。

<style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">
        <item name="android:textColor">@color/White</item>
        <item name="android:textStyle">bold</item>
        <item name="android:headerDividersEnabled">true</item>
        <item name="android:typeface">normal</item>
        <item name="android:background">@color/colorPrimaryDark</item>
    </style>

然后使用Builder创建警告对话框,如下所示

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this/getActvity(), R.style.AlertDialogCustom));

将当前类上下文和样式传递给ContextThemeWrapper类的构造函数。


@SamH67 告诉我你需要什么,我才能帮助你。 - Saurabh Bhandari
现在不要说我没有为此创建样式,请如果你有解决方案就发帖,否则不要无缘无故地给我投反对票,好吗? - SamH67
知道了,抱歉我缺少了括号,应该是这样的getContext() this worked now it look like this (new ContextThemeWrapper(getContext(), R.style.AlertDialogCustom)),最后一个括号确实缺失了。现在没问题了,让我运行一下然后验证你的答案,好吗? - SamH67
简单地告诉我如何做。 - SamH67
@MML 这是你的活动上下文。 - Saurabh Bhandari
显示剩余9条评论

5
你需要在res/values/styles.xml中添加对话框样式,就像下面这样。
<style name="MyDialog" parent="@android:style/Theme.Holo.Light.Dialog">
        <item name="android:background">@color/white</item>
    </style>

你可以按以下方式更改背景颜色:

编辑:

 getWindow().setBackgroundDrawableResource(R.color.white);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接