首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用appCompat 22.1及更高版本中的新AlertDialog和样式

如何使用appCompat 22.1及更高版本中的新AlertDialog和样式
EN

Stack Overflow用户
提问于 2015-04-22 20:09:31
回答 5查看 143.2K关注 0票数 157

我正在尝试从默认的android AlertDialog迁移到appCompat-22.1中包含的新版本,到目前为止,我知道你只需要导入android.support.v7.app.AlertDialog包就可以使用它。

但是我如何设计它的样式呢?例如,更改正/负按钮颜色、标题颜色、消息颜色和背景颜色?

EN

回答 5

Stack Overflow用户

发布于 2015-04-22 21:30:04

为所有应用程序使用一个主题,并且不要使用第二个参数来设置对话框的样式

代码语言:javascript
复制
<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的按钮,我必须在主题中添加一个对话框样式。

票数 64
EN

Stack Overflow用户

发布于 2015-12-19 17:26:32

如果你想使用新的android.support.v7.app.AlertDialog,并且按钮有不同的颜色,并且有一个自定义的布局,那么可以看看我的https://gist.github.com/JoachimR/6bfbc175d5c8116d411e

代码语言:javascript
复制
@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;
}

票数 19
EN

Stack Overflow用户

发布于 2017-07-29 15:48:01

关注@reVerse answer,但在我的例子中,我的AppTheme中已经有一些属性,比如

代码语言:javascript
复制
<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属性

代码语言:javascript
复制
<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>

代码语言:javascript
复制
AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.MyAlertDialogStyle);

希望它能帮助其他人

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29797134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档