Удаление сплошного фона из материала Android DatePickerDialog

У меня есть DatePickerDialog, который выглядит так

введите здесь описание изображения

Я безуспешно пытался удалить фон с нижних кнопок. До сих пор я пытался установить buttonStyle buttonBarStyle в теме, но это не сработало. Тема моего приложения основана на Theme.MaterialComponents.NoActionBar, и у меня есть подписка на datePickerStyle в моем styles.xml.

    <style name="DatePickerDialogStyle" parent="@style/Theme.MaterialComponents.Light.Dialog">
    <item name="colorPrimary">@color/red</item>
    <item name="colorPrimaryDark">@color/red</item>
    <item name="colorAccent">@color/red</item>
</style>

Я устанавливаю его в своем AppTheme следующим образом

        <item name="alertDialogTheme">@style/DatePickerDialogStyle</item>
    <item name="android:datePickerDialogTheme">@style/DatePickerDialogStyle</item>

Как удалить фон с этих кнопок?


person Abhishek Bansal    schedule 10.01.2019    source источник
comment
Если вы измените эти значения colorPrimary в своих стилях, например, для синего цвета, изменится ли цвет фона кнопок? Просто пытаюсь понять, влияет ли изменение цвета.   -  person miguelarc    schedule 10.01.2019
comment
да цвет меняет!   -  person Abhishek Bansal    schedule 10.01.2019


Ответы (1)


Вы можете программно установить значения DatePickerDialog перед их отображением, например:

DatePickerDialog datePickerDialog = new DatePickerDialog(this);
datePickerDialog.getButton(DatePickerDialog.BUTTON_NEGATIVE).setBackgroundColor(Color.TRANSPARENT);
datePickerDialog.getButton(DatePickerDialog.BUTTON_POSITIVE).setBackgroundColor(Color.TRANSPARENT);
datePickerDialog.show();

Вы также можете установить другие свойства, такие как textColor, размеры и т. д. См. официальную документацию для получения дополнительной информации об этом.

person miguelarc    schedule 10.01.2019
comment
это дает сбой, потому что getButton() возвращает null здесь - person Abhishek Bansal; 10.01.2019
comment
О, я думал, что ты тоже делал setButton() до этого. В этом случае вы можете выполнить setButton с желаемой конфигурацией, а затем вызвать getButton().setBackgroundColor(). Не лучший пример, но вы можете извлечь некоторую информацию о том, как использовать setButton здесь. - person miguelarc; 10.01.2019
comment
Кроме того, для того, чтобы функциональность щелчка кнопок работала, вы также должны установить прослушиватели программно. Просто проверьте разные конструкторы DatePickerDialog, есть смысл добавить OnClickListener. - person miguelarc; 10.01.2019
comment
он все еще падает после вызова setButton на DatePickerDialog - person Abhishek Bansal; 11.01.2019
comment
У вас есть трассировка стека? - person miguelarc; 16.01.2019