Цвет фона области кнопок AlertDialog Android - PullRequest
0 голосов
/ 26 февраля 2020

Как изменить цвет фона для области кнопок в диалоговом окне предупреждения. Я сделал с фоном заголовка, но не могу найти решение, чтобы изменить цвет или добавить разделитель в область кнопки.

Вот так выглядит сейчас.

enter image description here

И код

    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();

А вот стиль

<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>

1 Ответ

0 голосов
/ 26 февраля 2020

Вам нужно вызвать create() на объекте конструктора вместо show(), чтобы создать AlertDialog объект. Затем вы можете изменить любую часть вашего диалога, например, область кнопок, используя setOnShowListener. этот слушатель вызывается после создания вашего диалога, поэтому мы используем его, чтобы избежать исключения nullpointer.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...