Eu mudei a cor de um título AlertDialog usando este comando
alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>"));
Mas quero mudar a cor da linha que aparece sob o título; Como eu posso fazer isso ?
Observação: não quero usar um layout personalizado
android
android-alertdialog
Mohammed Subhi Sheikh Quroush
fonte
fonte
Respostas:
Infelizmente, essa não é uma tarefa particularmente simples de realizar. Em minha resposta aqui , eu detalho como ajustar a cor de um
ListSeparator
apenas verificando o estilo pai usado pelo Android, criando uma nova imagem e criando um novo estilo baseado no original. Infelizmente, ao contrário doListSeparator
estilo de,AlertDialog
temas são internos e, portanto, não podem ser referenciados como estilos pais. Não há maneira fácil de mudar essa pequena linha azul! Portanto, você precisa recorrer à criação de diálogos personalizados.Se isso não é sua xícara de chá ... não desista! Fiquei muito perturbado porque não havia uma maneira fácil de fazer isso, então configurei um pequeno projeto no github para criar diálogos de estilo holo personalizados rapidamente (assumindo que o telefone suporta o estilo holo). Você pode encontrar o projeto aqui: https://github.com/danoz73/QustomDialog
Deve facilmente permitir a passagem do azul chato para o laranja emocionante!
O projeto é basicamente um exemplo de uso de um construtor de diálogo personalizado e, no exemplo, criei uma visualização personalizada que parecia atender ao exemplo de endereço IP que você deu em sua pergunta original.
Com
QustomDialog
, para criar uma caixa de diálogo básica (título, mensagem) com uma cor diferente desejada para o título ou divisor, você usa o seguinte código:E para adicionar um layout personalizado (digamos, para adicionar o pequeno endereço IP
EditText
), você adicionapara o construtor com um layout que você projetou (o exemplo de IP pode ser encontrado no github). Eu espero que isso ajude. Muito obrigado a Joseph Earl e sua resposta aqui .
fonte
setItems
nesta caixa de diálogo personalizada. Quando eu adiciono a lista, ele realmente muda o título abaixo da lista. Como resolver este problema.Cor do divisor:
É um pouco hackeado, mas funciona muito bem para mim e sem nenhuma biblioteca externa (pelo menos no Android 4.4).
Você pode encontrar mais ids de diálogo no arquivo alert_dialog.xml . Por exemplo.
android:id/alertTitle
para mudar a cor do título ...ATUALIZAÇÃO: Cor do título
Hack para alterar a cor do título:
fonte
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
aqui.DialogFragment
que a cor do título não é id,android:id/alertTitle
mas não encontrei o correto.NullPointerException
nosetTextColor()
verifique se isso é útil para você ...
você obtém detalhes no seguinte link.
http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setCustomTitle%28android.view.View%29
CustomDialog.java
title.xml
fonte
Isso definirá a cor do título, ícone e divisor. Obrigada a mudar com qualquer nova versão do Android.
Lembre-se de chamar dialog.show () antes de chamar este método.
fonte
Seguindo o código-fonte do Dialog , descobri que Title é gerado em Class
MidWindow
aumentando odialog_title_holo.xml
layout. então o Id demTitleView
étitle
e o Id do divisor étitleDivider
.podemos acessar o Id
title
simplesmente porandroid.R.id.title
.e acesso ao Id de
titleDivider
porResources.getSystem().getIdentifier("titleDivider","id", "android");
O código final que usei para alterar a direção do título e a mudança de cor é:
fonte
Se você não quer uma "biblioteca" para isso, pode usar este hack malvado:
Isso foi testado e funciona em 4.x; não testado em, mas se minha memória for boa, deve funcionar para 2.xe 3.x
fonte
Na classe onCreateView, coloco o seguinte:
colorPrimary é um link para nosso arquivo colors.xml que armazena todas as cores. Também
d.setTitle
fornece uma maneira hacky de definir a cor do título.fonte
Se você estiver criando um layout personalizado para a caixa de diálogo de alerta
então você pode adicionar assim facilmente para mudar a cor
fonte
Se estiver usando um layout de título personalizado , você pode usá-lo como
alertDialog.setCustomTitle(customTitle);
Exemplo
No thread de IU, use um diálogo como:
customtitlebar.xml
fonte
Aqui está outra solução (com base nas respostas sugeridas) que lida com o estilo dos diálogos em uma classe sem a necessidade de se preocupar com o estado do diálogo quando você altera o estilo - o diálogo já pode ser mostrado ou apenas inicializado.
Exemplo de uso:
Implementação:
fonte
Continuando com esta resposta: https://stackoverflow.com/a/15285514/1865860 , fiz um bifurcação do repositório github de @ daniel-smith e fiz algumas melhorias:
setItems
método fixoitems_list
setItems
métodoslistItem
toque de feedbacklink: https://github.com/dentex/QustomDialog
fonte
Em vez de usar divisor na caixa de diálogo, use a visualização no layout personalizado e defina o layout como layout personalizado na caixa de diálogo.
custom_popup.xml:
activity.java:
fonte
fonte
Caso você esteja usando a extensão da caixa de diálogo, use:
fonte