AlertDialog在Nexus设备

时间:2016-03-15 15:55:13

标签: android alertdialog textcolor alertdialogpro

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

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看起来像这样:

enter image description here

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

enter image description here

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

1 个答案:

答案 0 :(得分:2)

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

因此,解决此问题所需要做的就是替换此导入:

import android.app.AlertDialog;

使用此导入:

import android.support.v7.app.AlertDialog;