我正在尝试从默认的android AlertDialog
迁移到appCompat-22.1中包含的新版本,到目前为止,我知道你只需要导入android.support.v7.app.AlertDialog
包就可以使用它。
但是我如何设计它的样式呢?例如,更改正/负按钮颜色、标题颜色、消息颜色和背景颜色?
发布于 2015-04-22 21:30:04
为所有应用程序使用一个主题,并且不要使用第二个参数来设置对话框的样式
<style name="MyTheme" parent="Base.Theme.AppCompat.Light">
<item name="alertDialogTheme">@style/dialog</item>
<item name="colorAccent">@color/accent</item>
</style>
<style name="dialog" parent="Base.Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/accent</item>
</style>
在我的应用程序中,在主题中使用颜色重音,不显示带有主题colorAccent的alertDialog的按钮,我必须在主题中添加一个对话框样式。
发布于 2015-12-19 17:26:32
如果你想使用新的android.support.v7.app.AlertDialog,并且按钮有不同的颜色,并且有一个自定义的布局,那么可以看看我的https://gist.github.com/JoachimR/6bfbc175d5c8116d411e
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.custom_layout, null);
initDialogUi(v);
final AlertDialog d = new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle)
.setTitle(getString(R.string.some_dialog_title))
.setCancelable(true)
.setPositiveButton(activity.getString(R.string.some_dialog_title_btn_positive),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
doSomething();
dismiss();
}
})
.setNegativeButton(activity.getString(R.string.some_dialog_title_btn_negative),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
})
.setView(v)
.create();
// change color of positive button
d.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button b = d.getButton(DialogInterface.BUTTON_POSITIVE);
b.setTextColor(getResources().getColor(R.color.colorPrimary));
}
});
return d;
}
发布于 2017-07-29 15:48:01
关注@reVerse answer,但在我的例子中,我的AppTheme
中已经有一些属性,比如
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:textColor">#111</item>
<item name="android:textSize">13sp</item>
</style>
因此,我的对话框将如下所示
我解决了这个问题
1)将导入从android.app.AlertDialog
修改为android.support.v7.app.AlertDialog
2)我用空值覆盖了AppTheme
中的2属性
<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Used for the buttons -->
<item name="colorAccent">#FFC107</item>
<!-- Used for the title and text -->
<item name="android:textColorPrimary">#FFFFFF</item>
<!-- Used for the background -->
<item name="android:background">#4CAF50</item>
<item name="android:textColor">@null</item>
<item name="android:textSize">@null</item>
</style>
。
AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.MyAlertDialogStyle);
希望它能帮助其他人
https://stackoverflow.com/questions/29797134
复制相似问题