警报对话框的文本颜色的XML属性

时间:2011-08-04 17:48:35

标签: android alertdialog textcolor

我正在申请一个主题:

  <style name="myAlertTheme" parent="@android:style/AlertDialog">
    <item name="android:textColor">#ff000000</item>
  </style>
  <style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
    <item name="android:textColor">#ff000000</item>
  </style>
  <style name="HSDroidStyle" parent="android:Theme">
    <item name="android:background">#ffd3d3d3</item>
    <item name="android:textColor">#ff000000</item>
    <item name="android:textSize">20dp</item>
    <item name="android:radioButtonStyle">@style/RadioButton</item>
</style>

但是当我创建一个警报时,文本显示为白色而不是黑色。要创建我正在使用的警报:

    AlertDialog alertDialog = new AlertDialog.Builder(
            new ContextThemeWrapper(act, R.style.myAlertTheme)).create();  
    alertDialog.setTitle(title);  
    alertDialog.setMessage(msg);  
    alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {  
      public void onClick(DialogInterface dialog, int which) {  
          if (exitOnFailure) mainAct.finish();
        return;  
    } });           
    alertDialog.show();

现在,如果我更改myAlertTheme中的大小,按钮中的“确定”会更改,但不会更改标题或文本。所以我猜测还有其他一些textColor属性可以解决这个问题。我尝试了大多数我能想到的,但都没有。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

hooked82是对的。在Honeycomb之前,Android不支持AlertDialogs正确的文本样式。您可以将样式应用于AlertDialog,但它会忽略文本样式。

这是一个很好的答案,可以证明是一个很好的解决方案:How to change theme for AlertDialog

这是一篇非常实用的博客文章,它使用上面提出的解决方案来正确设置AlertDialog样式。

答案 1 :(得分:0)

AFAIK没有办法修改标题/消息文字颜色(如果我错了请纠正我)。因此,一种方法是为AlertDialog创建自定义视图,并执行以下操作:

LayoutInflater factory = LayoutInflater.from(this);
final View layout = factory.inflate(R.layout.alert_layout, null);
alertDialog.setView(layout);

答案 2 :(得分:0)

尝试使用以下声明声明AlertDialog

AlertDialog alertDialog = new AlertDialog(mContext, R.style.myAlertTheme);