0

Grundsätzlich möchte ich die Farbe des Hinweises ändern, wenn die EditText -Eigenschaft focusable und foucsableInTouchMode auf false festgelegt ist.Selektor mit Hinweistextfarbe in Android

Es ist alles gut mit textColor, aber wurde mit textColorHint Eigentum von Editext nutzlos.

versuchte ich mein Bestes, aber alles in Vene, so dass mein Code wird wie folgt

Ich habe einen ziehbar namens „colorListfile“ wie folgt angegeben,

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:state_window_focused="false" 
     android:state_enabled="true" 
     android:color="@color/colorPrimaryDark" /> 

    <item 
     android:state_window_focused="false" 
     android:state_enabled="false" 
     android:color="@color/white" /> 
    <item 
     android:state_focused="true" 
     android:color="@color/login_signup_header_textcolor" /> 

    <item 
     android:color="@color/colorPrimary" /> 

</selector> 

Mein EditText unten ist,

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="zuluzulu01" 
    android:textColorHint="@drawable/colorListfile" 
    android:hint="Name" /> 

Aber dieser oder jeder andere Ansatz funktionierte nicht. Aber dieser gesamte Code funktioniert gut, wenn diese Eigenschaft auf textColor festgelegt ist.

Jede Hilfe würde sehr geschätzt werden.

+0

Sie können die 'color' zu' drawable' ändern, so wie '' –

+0

@ 周恩旭, Dank Kumpel, aber das funktioniert auch nicht –

Antwort

1

Sie sagten, Sie

wollen

, um die Farbe von den Hinweis zu ändern, wenn die EditText Eigenschaft fokussierbar und focusableInTouchMode perfekt auf false

Ihre ColorStateList Werk gesetzt. Es kommt nur darauf an, dass es auf state_focused (d. H. Der View hat Fokus) und state_window_focused (d. H. Das Fenster des View hat den Fokus).

sicher zu gehen, habe mich mit zwei EditText s gerade getestet (so kann die EditText Fokus verlieren, während der Benutzer im gleichen Fenster besetzt ist), ein Button (EN-/Deaktivieren die EditText) und ein Lauf Emulator Nougat (so kann ich schalten Sie den Fokus auf ein anderes Fenster)

Leider gibt es keine Wähler Objektattribute state_focusable und state_focusableInTouchMode. (Siehe die Dokumentation für Color List Resource) also, wenn Sie wirklich den Hinweis Farbe wünschen abzuhängen auf focusable und focusableInTouchMode wird auf eingestellt false, Sie müssen die gewünschte Farbe jedes Mal programmgesteuert einstellen, wenn Sie diese Attribute umschalten.

myEditText.setHintTextColor(Color.GREEN)