Personalizando as cores de um AlertDialog do Android

Neste artigo trago uma forma bem simples para personalizar o seu AlertDialog do Android com botões de confirmação. Há a possibilidade de escolher as cores para até 8 itens, que são eles: título da caixa, a pergunta a ser feita, a cor do botão de negação, a cor do texto do botão de negação, a cor da barra que separa o título da pergunta a ser feita, a cor de fundo (abaixo da Dialog), a cor do botão de aceitação e a cor do texto do botão de aceitação.

Para ficar mais fácil o entendimento, relacionei letras de A a H comentadas no código, à imagem da sequência (Imagem 01).

    public void executar(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Título");
        builder.setMessage(Html.fromHtml("<font color='#0000FF'>Tem certeza?</font>")); //blue (B)
        builder.setCancelable(false);
        builder.setNegativeButton("Não", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                //code
            }
        });
        builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                //code
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#7FFF00"))); //green lemon (F)
        try {
            Resources resources = dialog.getContext().getResources();
            int alertTitleId = resources.getIdentifier("alertTitle", "id", "android");
            TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId);
            alertTitle.setTextColor(Color.parseColor("#008000")); //green (A)
            int titleDividerId = resources.getIdentifier("titleDivider", "id", "android");
            View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId);
            titleDivider.setBackgroundColor(Color.parseColor("#FFFF00")); //yellow (E)
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        Button neg = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
        neg.setBackgroundColor(Color.parseColor("#FF0000")); //red (C)
        neg.setTextColor(Color.parseColor("#FFFFFF")); //white (D)
        Button pos = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
        pos.setBackgroundColor(Color.parseColor("#000000")); //black (G)
        pos.setTextColor(Color.parseColor("#FFA500")); //orange (H)
    }
Imagem 01

Observem que no arquivo de configuração “AndroidManifest.xml” (Imagem 02) foi adotado o tema Holo (android:theme=”@android:style/Theme.Holo”). Este tema foi o que trouxe a cor de fundo da Dialog, propriamente dita. Com outros temas, pode apresentar outros comportamentos e claro, outras cores. A cor de fundo da Dialog, vai ser determinada pelo tema escolhido.

Imagem 02

Como puderam notar o dialog do exemplo não ficou algo profissional mas a partir daqui podem sim, ter uma boa noção e executarem suas próprias modificações. Espero que o artigo tenha contribuído para a comunidade de alguma forma.

Custos com hospedagem, SSL e registro de domínio

Se o artigo ajudou de alguma forma e gostaria de contribuir com o projeto Fedablio, faça uma doação de qualquer valor.

Chave PIX: 21d97524-aa38-4438-b857-062a61e28327