Android:如何在不使用自定义布局的情况下更改 AlertDialog 标题文本颜色和背景颜色?

标签 android android-alertdialog background-color textcolor

我想在不使用自定义布局的情况下更改AlertDialog 标题颜色背景颜色。我的要求,

I want like this

我尝试了下面的代码,但无法正常工作。

final CharSequence[] items = {" Visiting Card", "Prescription Letter"};
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setMessage(message)
            .setTitle(title).setCancelable(false);

    builder.setItems(items, (dialog, item) -> {
    });

    AlertDialog dialog = builder.create();
            dialog.show();
    int textViewId = dialog.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
    TextView tv = dialog.findViewById(textViewId); // It always returns null
    if (tv != null) {
        tv.setTextColor(activity.getResources().getColor(R.color.white));
        tv.setBackgroundColor(activity.getResources().getColor(R.color.colorPrimary));
}

我尝试使用以下行,但它总是在 findViewById 中返回 null

int textViewId = dialog.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
TextView tv = dialog.findViewById(textViewId);

我也试过使用 style 但它只会改变标题文本的颜色,

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:background">#ffffff</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:headerBackground">@color/colorPrimary</item>
</style>

最佳答案

您可以在警报对话框中使用自定义标题:

TextView textView = new TextView(context);
textView.setText("Select an option");
textView.setPadding(20, 30, 20, 30);
textView.setTextSize(20F);
textView.setBackgroundColor(Color.CYAN);
textView.setTextColor(Color.WHITE);

final CharSequence[] items = {"Visiting Card", "Prescription Letter"};
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCustomTitle(textView);
builder.setItems(items, (dialog, item) -> {
    }).show();

Custom Alert Dialog Header

关于Android:如何在不使用自定义布局的情况下更改 AlertDialog 标题文本颜色和背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380128/

相关文章:

android - 需要在 android 应用程序中实现计时器(具有可变时间间隔的性质)

android - 适用于 Android 的 Olingo OData 2.0 - 对 javax.xml.stream.XMLInputFactory 的依赖

java - 从下拉列表中选择一种颜色并将该颜色存储在 cookie 中。

android - 无法动态更改自定义 DialogFragment 布局

android - 关闭和取消警报对话框android之间的交互

php - 如何更改select标签中下拉列表的背景颜色?

javascript - 颜色选择器没有响应

java - 我如何知道我的应用程序中两次操作之间经过了多少时间?

java - 当互联网连接失败时,AsyncTask doInBackground 返回空指针异常

android - 如何从 Activity 警报对话框中检索多项检查选择