7

我正在创建一个警报对话框。如果像这样创建它:

AlertDialog.Builder builder = AlertDialog.Builder((RelationActivity)getContext());
builder.setMessage("No relations found.");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {       
    public void onClick(DialogInterface dialog, int id) {
        ((RelationActivity)getContext()).finish();
    }
});
builder.create();
builder.show();

这是结果:http ://www.ozze.com.br/1.png

但是,如果我尝试设置一个主题,如下所示:

AlertDialog.Builder builder = new AlertDialog.Builder(((RelationActivity)getContext()), android.R.style.Theme_Holo_Light_Dialog);

这是结果:http ://www.ozze.com.br/2.png

请问,谁能帮我解决这个问题?看起来在使用主题时,主题“包围”了警报对话框。

4

2 回答 2

10

要为像 Theme.Holo.Light 这样的警报对话框设置不同的主题,请尝试使用 ContextThemeWrapper,如 android 源代码中的 Dialog.java 中使用的那样:

builder = new AlertDialog.Builder(new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog))
于 2012-10-14T21:18:18.060 回答
9

这是原始答案的链接here

为了快速参考,我在这里发布
带有 v7 库android.support.v7.app.AlertDialog的主题

android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(this,R.attr.alertDialogTheme);

带有android.app.AlertDialog构造函数的主题

android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT );

但根据新文档,
此常量(AlertDialog.THEME_HOLO_LIGHT)在 API 级别 23 中已弃用。使用 Theme_Material_Light_Dialog_Alert 。

 android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this,android.R.style.Theme_Material_Light_Dialog_Alert );
于 2015-10-28T06:33:27.403 回答