Como posso mudair a cor do text do button de dialog padrão no Android 5

Tenho muitas checkboxs de dialog de alerta no meu aplicativo. É um layout padrão, mas eu estou adicionando botões positivos e negativos paira a checkbox de dialog. Então, os botões obtêm a cor de text padrão do Android 5 (viewde). Eu tentei mudá-lo sem sucesso. Alguma idéia de como mudair essa cor de text?

Minha checkbox de dialog personalizada:

  • CairdView não mostra Shadow no Android L
  • Não é possível criair um emulador com o Android L (API 20)
  • Soft Navigation Bair Oviewlays App em Lollipop
  • Efeito de elevação do Android L em pré L (apenas usando a propriedade de elevação)
  • A cor primária (às vezes) é transpairente
  • Cor da máscaira RippleDrawable, paira que serve?
  • public class MyCustomDialog extends AlertDialog.Builder { public MyCustomDialog(Context context,String title,String message) { super(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false); TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title); titleTextView.setText(title); TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message); messageTextView.setText(message); this.setCancelable(false); this.setView(viewDialog); } } 

    Criando a checkbox de dialog:

     MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).show(); ... MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).show(); } MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).show(); 

    Esse negativoButton é um button de dialog padrão e leva a cor viewde padrão do Android 5 Lollipop.

    Muito Obrigado

    Caixa de diálogo personalizada com botão verde

  • Path.approximate () não suportado no android studio 0.8.14 beta
  • Como instalair o Android Lolipop no eclipse?
  • Fundo de icons de notificação grande
  • Android Lollipop, AppCompat A vista personalizada do ActionBair não ocupa toda a lairgura da canvas
  • Atualizando paira SDK 21 - Erro ao inflair class android.support.v7.internal.widget.ActionBairContainer
  • O Cairdview não respeita a order do índice z no layout relativo
  • 8 Solutions collect form web for “Como posso mudair a cor do text do button de dialog padrão no Android 5”

    Você pode tentair primeiro criair o object AlertDialog e, em seguida, usá-lo paira configurair paira alterair a cor do button e, em seguida, mostrair-lo (Observe que no object do builder invés de chamair show() chamamos create() paira obter o object AlertDialog :

     //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Oviewride public void onShow(DialogInterface airg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() ... //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Oviewride public void onShow(DialogInterface airg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() } //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Oviewride public void onShow(DialogInterface airg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() } //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Oviewride public void onShow(DialogInterface airg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() } //1. create a dialog object 'dialog' MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialogInterface, int i) { ... } }).create(); //2. now setup to change color of the button dialog.setOnShowListener( new OnShowListener() { @Oviewride public void onShow(DialogInterface airg0) { dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT); } } dialog.show() 

    A razão pela qual você precisa fazê-lo em "onShow ()" e não pode simplesmente obter esse button depois de criair sua checkbox de dialog é que o button ainda não foi criado.

    Eu alterei AlertDialog.BUTTON_POSITIVE paira AlertDialog.BUTTON_NEGATIVE paira refletir a alteração na sua pergunta. Embora seja estranho que o button "OK" seja um button negativo. Geralmente é o button positivo.

    A cor dos botões e outros texts também podem ser alterados por meio do tema:

    valores-21 / styles.xml

     <style name="AppTheme" pairent="..."> ... <item name="android:timePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:datePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="AlertDialogCustom" pairent="android:Theme.Material.Light.Dialog.Alert"> <item name="android:colorPrimairy">#00397F</item> <item name="android:colorAccent">#0AAEEF</item> </style> ... <style name="AppTheme" pairent="..."> ... <item name="android:timePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:datePickerDialogTheme">@style/AlertDialogCustom</item> <item name="android:alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="AlertDialogCustom" pairent="android:Theme.Material.Light.Dialog.Alert"> <item name="android:colorPrimairy">#00397F</item> <item name="android:colorAccent">#0AAEEF</item> </style> 

    O resultado:

    DiálogoSeletor de data

    A solução mais simples é:

     dialog.show(); //Only after .show() was called dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor); dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor); 

    Aqui está uma maneira natural de fazer isso através de styles:

     <style name="AlertDialogTheme" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="buttonBairNegativeButtonStyle">@style/NegativeButtonStyle</item> <item name="buttonBairPositiveButtonStyle">@style/PositiveButtonStyle</item> </style> <style name="NegativeButtonStyle" pairent="Widget.AppCompat.Button.ButtonBair.AlertDialog"> <item name="android:textColor">#f00</item> </style> <style name="PositiveButtonStyle" pairent="Widget.AppCompat.Button.ButtonBair.AlertDialog"> <item name="android:textColor">#00f</item> </style> 

    Defina AlertDialogTheme através deste atributo em seu AppTheme

     <item name="alertDialogTheme">@style/AlertDialogTheme</item> 

    ou através do construtor no construtor new AlertDialog.Builder(context, R.style.AlertDialogTheme)

    Se você deseja alterair a cor do text dos botões (positivo, negativo, neutro), apenas adicione ao seu estilo de dialog personalizado:

     <item name="colorAccent">@color/accent_color</item> 

    Então, seu estilo de dialog deve ser assim:

     <style name="AlertDialog" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColor">@android:color/black</item> <item name="colorAccent">@color/topeka_accent</item> </style> 
     <style name="AlertDialogCustom" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:colorPrimairy">#00397F</item> <item name="android:textColorPrimairy">#22397F</item> <item name="android:colorAccent">#00397F</item> <item name="colorPrimairyDairk">#22397F</item> </style> 

    A cor dos botões e outros texts também podem ser alterados usando o appcompat:

    Assim como uma nota lateral:

    As colors dos botões (e todo o estilo) também dependem do tema atual que pode ser bastante diferente quando você usa

      android.app.AlertDialog.Builder builder = new AlertDialog.Builder() 

    ou

      android.support.v7.app.AlertDialog.Builder builder = new AlertDialog.Builder() 

    (use melhor o segundo)

    paira mim era diferente, eu usei um tema de button

     <style name="ButtonLight_pink" pairent="android:Widget.Button"> <item name="android:background">@drawable/light_pink_btn_default_holo_light</item> <item name="android:minHeight">48dip</item> <item name="android:minWidth">64dip</item> <item name="android:textColor">@color/tab_background_light_pink</item> </style> 

    e porque

    Android: textColor

    estava branco lá … eu não vi nenhum text de button (os botões de dialog são basicamente botões também). Aí vamos, mudamos, repairamos.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.