XML-атрибуты для цвета текста диалогового окна предупреждения - PullRequest
3 голосов
/ 04 августа 2011

Я применяю тему:

  <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();

Теперь «OK» в кнопке меняется, если я изменяю размер в myAlertTheme, но не заголовок или текст. Так что я предполагаю, что есть какой-то другой атрибут textColor, который решает эту проблему. Я перепробовал большинство из них, но ни один из них не работает.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 04 августа 2011

hooked82 прав. До появления Honeycomb Android не поддерживал должным образом стилизацию текста для AlertDialogs. Вы можете применять стили к AlertDialog, но он будет игнорировать стили текста.

Вот хороший ответ SO, который может оказаться хорошим решением для вас: Как изменить тему для AlertDialog

Вот действительно полезное сообщение в блоге, в котором используется описанное выше решение для правильного оформления AlertDialog.

0 голосов
/ 04 августа 2011

Попробуйте объявить AlertDialog с помощью этого оператора:

AlertDialog alertDialog = new AlertDialog(mContext, R.style.myAlertTheme);
0 голосов
/ 04 августа 2011

AFAIK нет способа изменить цвета текста заголовка / сообщения (пожалуйста, исправьте меня, если я ошибаюсь).Таким образом, один из способов сделать это - создать собственное представление для вашего AlertDialog и сделать что-то вроде следующего:

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