如何更改AlertDialog消息的颜色?

26

我有一个 AlertDialog,它的消息已显示,但文本颜色是白色的。它与背景混在一起。我尝试了更改主题,但没有成功。如何更改消息的颜色?

相关代码:

AlertDialog.Builder builder;
builder = new AlertDialog.Builder(MainActivityGame.this);

builder.setTitle("Name");
builder.setMessage("Are you ");
builder.setCancelable(false);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        //Submit default name, go home
        boolean isInserted = myDb.insertData(defaultName, triesTaken, difficultyText);
        if (isInserted) {
            Toast.makeText(MainActivityGame.this, "Your name was submitted", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainActivityGame.this, "Error, your name wasn't submitted\n Have you entered a default name?\n Go to Settings/Default Name to set it up", Toast.LENGTH_SHORT).show();
        }
        Intent intent = new Intent(MainActivityGame.this, MainActivity.class);
        startActivity(intent);
    }
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        userName.setVisibility(View.VISIBLE);
        submitName.setVisibility(View.VISIBLE);
        submitName.setEnabled(true);
        dialogInterface.dismiss();
    }
});
builder.create();
builder.show();

1
你尝试过查找答案吗?https://dev59.com/HmQo5IYBdhLWcg3wQdet https://dev59.com/rlkT5IYBdhLWcg3wbO8g - Karim ElGhandour
4个回答

63

你可以这样为您的提示对话框添加样式:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogStyle);

风格和往常一样:

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:colorAccent">#f3f3f3</item>
    <item name="android:textColor">#f3f3f3</item>
    <item name="android:textColorPrimary">#f3f3f3</item>
</style>

你可以将上述样式应用于themes.xml中的所有警告对话框,方法如下:@style/AlertDialogStyle - fbiego

1
你可以使用this方法,就像@KarimElGhandour提到的那样,或者在res\layout文件夹中创建自定义Layout,然后使用alertDialog.setView(LayoutInflater.inflate(R.layout.yourlayout), yourRootView应用它。

谢谢,我创建了自己的主题并将其添加到AlertDialog的初始化中。 - 8bit an3

0

在这个风格中,您甚至可以更改重力模式

<style name="WelcomeStyle" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:background">#FFD600</item>
        <item name="android:textColor">#C51162</item>
        <item name="android:textColorPrimary">#00B8D4</item>
        <item name="android:gravity">center</item>
        <item name="android:justificationMode">inter_word</item>
    </style>

0
  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.DialogStyle);

styles.xml

  <style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:colorAccent">#303030</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:textColorPrimary">#494949</item>
    <item name="android:windowBackground">#201D1D</item>
</style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接