2015-10-26 8 views
0

Я показываю alertdialog в своем приложении, но в левой и правой части заголовка отображается другой цвет. Я поставил свой собственный цвет фона в thems.xmlУстановить цвет alertdialog

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android">  
<style name="ACCAppTheme" parent="android:Theme.Holo"> 
    <!-- Change default text colour from dark grey to black --> 
    <!-- <item name="android:windowBackground">@drawable/ic_logo</item> --> 
    <item name="android:background">#140051</item> 
    <item name="android:textColor">#ffffff</item> 
    <item name="android:textColorHint">#c0c0c0</item>   
    <item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>   
</style>  

<!-- <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:textSize">18sp</item> 
</style> --> 

<style name="AppTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">#140051</item> 
    <item name="android:height">50dp</item> 
    <item name="android:titleTextStyle">@style/AppTheme.ActionBar.Text</item> 
    <item name="android:textColor">@android:color/white</item> 
    <item name="android:showDividers">beginning</item> 
</style> 

<style name="AppTheme.ActionBar.Text" parent="@android:style/TextAppearance"> 
    <item name="android:textAllCaps">false</item> 
    <item name="android:textColor">@android:color/white</item> 
</style> 
</resources> 

но то, что появляется, как это

enter image description here

вот код, который создает оповещения диалоговое

public class AppMessages { 
public static final int MESSAGE_INFO = 1; 
public static final int MESSAGE_CRITICAL = 2; 

public interface AlertButtonClickListener { 

    public abstract void onButtonClicked(boolean value); 

} 




public static void showMessage(Context context, 
           String message, 
           String title, 
           int messageType, 
           final AlertButtonClickListener target) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setMessage(message) 
      .setTitle(title) 
      .setIcon(R.drawable.ic_dialog_information) 
      .setCancelable(false) 
      .setPositiveButton("Ok", new AlertDialog.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        if (target != null) { 
         target.onButtonClicked(true); 
        }      
       } 
      }); 

    switch (messageType) { 
    case AppMessages.MESSAGE_CRITICAL: 
     builder.setIcon(R.drawable.ic_dialog_exclamation); 
     break; 
    case AppMessages.MESSAGE_INFO: 
     builder.setIcon(R.drawable.ic_dialog_information); 
     break; 
    } 

    builder.show(); 
} 






public static void yesNo(final Context mContext, 
         final String title, 
         final String msg, 
         final String positiveBtnCaption, 
         final String negativeBtnCaption, 
         final boolean isCancelable, 
         final AlertButtonClickListener target) { 

     ((Activity) mContext).runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
      AlertDialog.Builder builder = new AlertDialog.Builder(mContext); 

      builder.setTitle(title) 
        .setMessage(msg)       
        .setIcon(R.drawable.ic_dialog_question) 
        .setCancelable(false) 
        .setPositiveButton(positiveBtnCaption, 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int id) { 
            target.onButtonClicked(true); 
           } 
          }) 
        .setNegativeButton(negativeBtnCaption, 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
             int id) { 
            target.onButtonClicked(false); 
           } 
          }); 

      AlertDialog alert = builder.create(); 
      alert.setCancelable(isCancelable); 
      alert.show(); 
      if (isCancelable) { 
       alert.setOnCancelListener(new OnCancelListener() { 
        @Override 
        public void onCancel(DialogInterface arg0) { 
         target.onButtonClicked(false); 
        } 
       }); 
      } 
     } 
    }); 

} 
} 

вот как Я называю это

AppMessages.showMessage(thisActivity, 
            "New update found. Click Ok to download it now.", 
            "New Update Found", 
            1, 
            new AppMessages.AlertButtonClickListener() { 
             @Override 
             public void onButtonClicked(boolean value) { 
              APKDownloader.downloadAPK(thisActivity); 
             } 
            }); 
+0

Не могли бы вы разместить часть кода, который вы используете для создания диалога? –

ответ

0

Попробуйте это,

Настройка AlertDialog Тема

Создать новый файл Android XML ресурсов в рамках рес/значений/

Вы хотите создать новый стиль, который наследует от alertdialog по умолчанию тема:

<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 
    <item name="android:bottomBright">@color/white</item> 
    <item name="android:bottomDark">@color/white</item> 
    <item name="android:bottomMedium">@color/white</item> 
    <item name="android:centerBright">@color/white</item> 
    <item name="android:centerDark">@color/white</item> 
    <item name="android:centerMedium">@color/white</item> 
    <item name="android:fullBright">@color/orange</item> 
    <item name="android:fullDark">@color/orange</item> 
    <item name="android:topBright">@color/blue</item> 
    <item name="android:topDark">@color/blue</item> 
</style> 

Вы можете указать либо цвета, либо чертежи для каждого раздела AlertDialog. AlertDialog построит его дисплей, объединив 3 ярлыка/цвета (сверху, в центре, снизу) или один яркий/цветный (полный).

В теме вашего собственного переопределения андроида: alertDialogStyle стиль (вы можете сделать это в том же файле XML):

@ стиль/CustomDialogTheme

Override тему вашего приложения в AndroidManifest в приложение тег:

<application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:theme="@style/MyTheme"> 

Теперь, когда вы определили тему вашего приложения, любые атрибуты переопределены в вашей теме будет резонировать во всем приложении. Например, если вы хотите изменить цвет заголовка вашего приложения: Вы бы сначала определить новый стиль, который наследуется от атрибута по умолчанию


@ цвет/синий

и просто добавить новый переопределенный предмет к вашей теме:

<style name="MyTheme"> 
    <item name="android:windowTitleBackgroundStyle">@style/MyBackground</item> 
    <item name="android:alertDialogStyle">@style/CustomDialogTheme</item> 
</style> 
+0

Все тот же выход. –

+0

О, а также нет «андроида: alertDialogStyle» из выделения. Это нормально? –

+0

извините, не могу понять. –

Смежные вопросы