AlertDialog 在 Nexus 设备上看起来不同

AlertDialog looks differently on Nexus devices

我正在使用以下代码在我的应用程序的不同场景中创建不同的 AlertDialogs:

public static void showAlertDialog(Context activityContext, DialogType type, CharSequence title, CharSequence msg, CharSequence posText,
        DialogInterface.OnClickListener posOnClickListener, CharSequence negText, DialogInterface.OnClickListener negOnClickListener, boolean isCancelable, int iconResId) {
    try {
        final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activityContext);
        if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) title))
            alertDialogBuilder.setTitle(title);
        if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) msg))
            alertDialogBuilder.setMessage(msg);
        if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) posText))
            alertDialogBuilder.setPositiveButton(posText, posOnClickListener);
        if (JavaUtils.isNotNullNotEmptyNotWhiteSpaceOnly((String) negText))
            alertDialogBuilder.setNegativeButton(negText, negOnClickListener);

        alertDialogBuilder.setCancelable(isCancelable);

        // set alert icon
        if (iconResId == 0) {
            alertDialogBuilder.setIcon(type == DialogType.ERROR ? android.R.drawable.ic_dialog_alert : android.R.drawable.ic_dialog_info);
        } else {
            alertDialogBuilder.setIcon(iconResId);
        }

        AlertDialog alertDialog = alertDialogBuilder.create();

        alertDialog.show();
    } catch (Exception e) {
        InfiLogger.w("showAlertDialog", e.toString(), e);
        Crashlytics.logException(e);
    }
}

虽然在大多数 运行 Lollipop 或更高版本的设备上,AlertDialog 看起来像这样:

Nexus 设备上,相同的 运行ning 代码如下所示:

有人知道为什么会这样吗?解决这个问题的正确方法是什么?

此问题的解决方案是使用支持库中的 AlertDialog 而不是使用原始库。

所以我解决这个问题所要做的就是替换这个导入:

import android.app.AlertDialog;

使用此导入:

import android.support.v7.app.AlertDialog;