3

我有一个使用 AlertDialog.Builder 构建的对话框,我想更改对话框的背景颜色。

我一直在 Internet 上阅读,可以使用 ContextThemeWrapper (使用 API 10),但它不起作用。

我正在做的是:

ContextThemeWrapper wrapper = new ContextThemeWrapper(this, R.style.MyDialogTheme);
AlertDialog alertDialog = new AlertDialog.Builder(wrapper)).create();  

<style name="MyDialogTheme" parent="@android:style/Theme.Dialog">
    <item name="android:background">#FFFFFF</item>
</style>

为什么这不起作用?

提前致谢!

4

3 回答 3

2

alertDialog xml 文件在这里:

https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/alert_dialog_micro.xml

只需更改它们的值:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle(_title);
    builder.setMessage(_message);
    //....
    AlertDialog dialog = builder.show();

    int objeto = getResources().getIdentifier("buttonPanel","id","android");
    View vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        vistaObjeto.setBackgroundColor(Color.RED);
    }
    objeto = getResources().getIdentifier("topPanel", "id", "android");
    vistaObjeto = dialog.findViewById(objeto);
    if (vistaObjeto != null){
        vistaObjeto.setBackgroundColor(Color.YELLOW);
    }
    objeto = getResources().getIdentifier("alertTitle","id","android");
    vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        ((TextView)vistaObjeto).setTextColor(Color.BLACK);
    }
    objeto = getResources().getIdentifier("titleDivider","id","android");
    vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        vistaObjeto.setBackgroundColor(Color.GREEN);
    }
    objeto = getResources().getIdentifier("contentPanel","id","android");
    vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        vistaObjeto.setBackgroundColor(Color.BLUE);
    }
    objeto = getResources().getIdentifier("buttonPanel","id","android");
    vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        vistaObjeto.setBackgroundColor(Color.MAGENTA);
    }
    objeto = getResources().getIdentifier("parentPanel","id","android");
    vistaObjeto=dialog.findViewById(objeto);
    if (vistaObjeto!=null){
        vistaObjeto.setBackgroundColor(Color.CYAN);
    }
    return dialog;
}
于 2015-06-14T19:40:07.657 回答
0

对自定义对话框使用以下代码:

protected Dialog onCreateDialog(int dialogId) {
    LayoutInflater inflater = 
        (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final View viewMessEdit = inflater.inflate(
        R.layout.example,
        (ViewGroup) findViewById(R.id.dialog_mess_edit_root));
    builder.setView(viewMessEdit);
    viewMessEdit.setBackgroundResource(R.color.pink_dark);
}

并点击此链接:

于 2012-10-19T11:35:13.257 回答
0

我已经用 AlertDialog.THEME_DEVICE_DEFAULT_LIGHT 修改了我的 AlertDialog ,所以我写了我的构建器,如下所示:

AlertDialog.Builder dialog = new AlertDialog.Builder(ApplicationCertificatesListFragment.this.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);

于 2016-08-04T10:05:22.213 回答