如何在警报对话框中更改按钮区域的背景颜色。
我已经完成了标题背景,但是找不到更改颜色或将分隔线添加到按钮区域的解决方案。
这就是现在的样子。
和代码
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>
最佳答案
您需要在构建器对象上调用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();