Eu tenho muitas caixas de diálogo de alerta no meu aplicativo. É um layout padrão, mas estou adicionando botões positivos e negativos à caixa de diálogo. Portanto, os botões obtêm a cor do texto padrão do Android 5 (verde). Eu tentei mudar isso sem sucesso. Alguma idéia de como alterar a cor do texto?
Minha caixa de diálogo personalizada:
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 caixa de diálogo:
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
...
}
}).show();
Esse negativeButton é um botão de diálogo padrão e usa a cor verde padrão do Android 5 Lollipop.
Muito Obrigado
Respostas:
Você pode tentar criar o
AlertDialog
objeto primeiro e depois usá-lo para configurar a alteração da cor do botão e exibi-lo. (Observe que nobuilder
objeto, em vez de chamarshow()
, chamamoscreate()
para obter oAlertDialog
objeto:O motivo pelo qual você precisa ativá-lo
onShow()
e não pode simplesmente acessar esse botão após criar sua caixa de diálogo é que o botão ainda não havia sido criado.Mudei
AlertDialog.BUTTON_POSITIVE
paraAlertDialog.BUTTON_NEGATIVE
refletir a alteração na sua pergunta. Embora seja estranho que o botão "OK" seja um botão negativo. Geralmente é o botão positivo.fonte
Aqui está uma maneira natural de fazer isso com estilos:
Se você
AppTheme
é herdado deTheme.MaterialComponents
, então:Se você
AppTheme
é herdado deTheme.AppCompat
:Use o seu
AlertDialogTheme
no seuAppTheme
ou no construtor
fonte
com.google.android.material:material:1.0.0-beta01
e eu estou usando Theme.MaterialComponents.Light.Dialog.AlertA cor dos botões e outros textos também pode ser alterada via tema:
O resultado:
fonte
android:
peça deandroid:alertDialogTheme
e paraandroid:colorAccent
.A solução mais simples é:
fonte
AlertDialog.BUTTON_NEGATIVE
etc.Existem duas maneiras de alterar a cor do botão da caixa de diálogo.
Maneira básica
Se você quiser apenas alterar uma atividade, escreva as duas linhas abaixo após
alertDialog.show();
Recomendado
Recomendamos adicionar um tema para
AlertDialog
instyles.xml
para que você não precise escrever o mesmo código repetidamente em cada atividade / chamada de diálogo. Você pode apenas criar um estilo e aplicar esse tema na caixa de diálogo. Portanto, sempre que você desejar alterar a cor da caixa AlertDialog, basta alterar a cor em styles.xml e todas as caixas de diálogo serão atualizadas em todo o aplicativo.E aplique o tema em
AlertDialog.Builder
fonte
Se você deseja alterar a cor do texto dos botões (positivo, negativo, neutro), basta adicionar ao seu estilo de diálogo personalizado:
Portanto, seu estilo de diálogo deve ficar assim:
fonte
A cor dos botões e outros textos também pode ser alterada usando appcompat:
fonte
No tema / estilo do seu aplicativo, adicione as seguintes linhas:
Em seguida, adicione os seguintes estilos:
O uso desse método torna desnecessário definir o tema no construtor AlertDialog.
fonte
Apenas como uma observação lateral:
As cores dos botões (e todo o estilo) também dependem do tema atual, que pode ser bastante diferente quando você usa
ou
(Melhor usar o segundo)
fonte
Aqui está como você faz: Maneira simples
fonte
para mim foi diferente, eu usei um tema de botão
e porque
estava branco lá… não vi nenhum texto do botão (os botões da caixa de diálogo também são basicamente botões). lá vamos nós, mudou, corrigiu.
fonte