简体   繁体   English

AlertDialog按钮区域背景色Android

[英]AlertDialog button area background color Android

How to change background color for button area in alert dialog.如何更改警报对话框中按钮区域的背景颜色。 I have done with title background but can't find solution to change color or add divider to button area.我已经完成了标题背景,但找不到更改颜色或向按钮区域添加分隔线的解决方案。

This is how looks now.这是现在的样子。

在此处输入图片说明

And code和代码

    new AlertDialog.Builder(MainActivity.this,R.style.MyDialogTheme)
            .setCustomTitle(custom_dialog_header)
            .setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int selectedIndex) {
                    selectedItem = selectedIndex;
                }
            })
            .setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int linkID) {
                    String[] files = links.split(",");
                }
            })
            .setNegativeButton("Cancel", null)
            .show();

And here is style这是风格

<style name="MyDialogTheme" parent="Theme.AppCompat.DayNight.Dialog.Alert">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>

    <item name="android:background">#282828</item>
    <item name="android:colorPrimary">#ffffff</item>
    <item name="android:colorAccent">@color/colorSwipe</item>
    <item name="colorAccent">@color/colorSwipe</item>
    <item name="android:fontFamily">@font/roboto</item>
    <item name="android:textSize">16dp</item>
</style>

You need to call create() on builder object instead of show() to create an AlertDialog object.您需要在 builder 对象上调用create()而不是show()来创建AlertDialog对象。 Then, you can change any part of your dialog such as button area using setOnShowListener .然后,您可以使用setOnShowListener更改对话框的任何部分,例如按钮区域。 this listener is called after your dialog is created, so we use it to avoid nullpointer exception.在创建对话框后调用此侦听器,因此我们使用它来避免空指针异常。

final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this,R.style.MyDialogTheme)
        .setCustomTitle(custom_dialog_header)
        .setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int selectedIndex) {
                int selectedItem = selectedIndex;
            }
        })
        .setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int linkID) {
                String[] files = links.split(",");
            }
        })
        .setNegativeButton("Cancel", null)
        .create();
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface d) {
        // to change background of positive button
        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setBackgroundColor(getResources().getColor(R.color.some_color));
        // to change background of button area
        ButtonBarLayout b = (ButtonBarLayout)(dialog.getButton(AlertDialog.BUTTON_POSITIVE).getParent());
        b.setBackgroundColor(getResources().getColor(R.color.some_color));
    }
});
dialog.show();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM