setHintTextColor () em EditText

88

Tenho o modo de exibição em que existem duas caixas de texto, e o usuário pode selecionar a cor do texto de outra visão na mesma tela (por meio da caixa de diálogo).

Portanto, quando o usuário muda de cor por meio da caixa de diálogo, estou mudando a cor do EditTexttexto e sua dica. Mas quando há algum texto disponível EditTextdepois que o usuário seleciona outra cor, então esse texto vem nessa cor. Mas se eu remover todo esse texto, a cor de HintText será a da cor anterior.

Por exemplo, atualmente, se eu tiver a cor vermelha na caixa de texto e o usuário selecionar a cor verde, o texto aparecerá na cor verde. Mas se eu remover esse texto, o texto da dica ficará vermelho, mesmo se eu alterar a cor da dica no código. Esse problema só surge quando há algum texto ali. se estiver em branco e houver texto de dica, o problema não está ocorrendo.

kartik trivedi
fonte

Respostas:

56

Use isso para alterar a cor da dica. -

editText.setHintTextColor(getResources().getColor(R.color.white));

Solução para o seu problema -

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){
        //do something
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        //do something
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        if(arg0.toString().length() <= 0) //check if length is equal to zero
            tv.setHintTextColor(getResources().getColor(R.color.white));
    }
});
Sunil Kumar Sahoo
fonte
7
Por que uma solução tão complicada que pode ser realizada em meia linha, como anandc respondeu abaixo.
zeeshan
8
porque essa solução não está resolvendo o problema dele?
evaristokbza
318

Basta adicionar isso em seu layoutpara EditText:

android: textColorHint = "# FFFFFF"

Anand Chavan
fonte
9
Como isso resolveria a questão de OP? a questão é sobre como mudar a cor da dica DINAMICAMENTE quando o EditText tem algum texto e eu não vejo como isso vai resolver ...
evaristokbza
5
Por favor, leia a pergunta com atenção. autor não perguntou da maneira apropriada.
Anand Chavan
22

Cores padrão:

android:textColorHint="@android:color/holo_blue_dark"

Para código de cores:

android:textColorHint="#33b5e5"
Kiran Kumar
fonte
não leve essas edições para o lado pessoal. A edição melhora basicamente a legibilidade da resposta e / ou melhora a completude da mesma. Além disso, se aplicável, adicione uma explicação sobre o código quando necessário, como o que faz ou qual problema o OP estava enfrentando, etc. :)
Sufian
15

Arquivo Xml do Layout Interno Podemos Mudar a Cor da Dica .....

android:textColorHint="@android:color/*****"

você pode substituir * por cor ou código de cores.

Akhil s
fonte
7

Parece que EditText aplica hintTextColor apenas se o texto estiver vazio. Uma solução simples será assim

Editable text = mEditText.getText();
mEditText.setText(null);
mEditText.setHintTextColor(color);
mEditText.setText(text);

Se você tiver vários campos, pode estender o EditText e escrever um método que execute essa lógica e usar esse método em seu lugar.

dishan
fonte
6

Programaticamente em Java - pelo menos API v14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));

Michael
fonte
1
no meu Samsung S5 apiV19 o mesmo problema, como @dishan mencionou: setHintTextColor(color)não funciona caso haja algum texto, MESMO se estiver "".
Dmitry Gryazin
2

É como a cor de dica padrão, funcionou para mim:

editText.setHintTextColor(Color.GRAY);

karan
fonte
0

Você pode ligar editText.invalidate()depois de redefinir a cor da dica. Isso pode resolver seu problema. Na verdade, o SDK atualiza a cor da mesma maneira.

Freshomer
fonte