wake-up-neo.com

setHintTextColor () in EditText

Ich habe die Ansicht, in der zwei Textfelder vorhanden sind, und der Benutzer kann die Textfarbe aus einer anderen Ansicht auf demselben Bildschirm auswählen (durch ein Dialogfeld).

Wenn der Benutzer also die Farbe über ein Dialogfeld ändert, ändere ich die Farbe von EditText und dessen Hinweis. Wenn jedoch in EditText Text verfügbar ist, nachdem der Benutzer eine andere Farbe ausgewählt hat, kommt dieser Text in dieser Farbe. Wenn ich jedoch den gesamten Text entferne, ist die Farbe von HintText die der vorherigen Farbe.

Wenn ich beispielsweise eine rote Farbe in einem Textfeld habe und der Benutzer die grüne Farbe auswählt, wird der Text in grün angezeigt. Wenn ich diesen Text jedoch entferne, wird der Hinweistext rot angezeigt, auch wenn ich die Farbe des Hinweises ändern im Code. Dieses Problem tritt nur auf, wenn Text vorhanden ist. Wenn es leer ist und ein Hinweistext vorhanden ist, kommt das Problem nicht.

85
kartik trivedi

Verwenden Sie diese Option, um die Hinweisfarbe zu ändern. -

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

Lösung für Ihr Problem -

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));
    }
});
51

Fügen Sie dies einfach in Ihre layout für die EditText ein:

Android: textColorHint = "# FFFFFF"

317
Anand Chavan

Standardfarben:

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

Für Farbcode:

Android:textColorHint="#33b5e5"
21
kiran kumar

In der Layout-XML-Datei können wir die Farbe des Hinweises ändern .....

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

sie können * durch Farbe oder Farbcode ersetzen.

15
Akhil s

Scheint, dass EditText die HinweisTextColor nur dann anwendet, wenn der Text leer ist. So einfache Lösung wird so sein

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

Wenn Sie über mehrere Felder verfügen, können Sie den EditText erweitern und eine Methode schreiben, die diese Logik ausführt, und stattdessen diese Methode verwenden. 

7
dishan

Programmatisch in Java - Mindestens API v14 +

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

5
Michael

Dies ist wie die Standard-Hinweisfarbe, die für mich funktioniert hat:

editText.setHintTextColor(Color.GRAY);

2
karan

Sie können editText.invalidate() aufrufen, nachdem Sie die Hinweisfarbe zurückgesetzt haben. Das könnte Ihr Problem lösen. Eigentlich aktualisiert das SDK die Farbe auf dieselbe Weise.

0
freshomer