2016-07-26 13 views
0

Ich habe verschiedene Antworten gefunden, wie man die Linienfarbe eines EditText in Android programmatisch ändern kann. Im Moment bin ich mit dieser Lösung:Android: Tönungsfarbe eines einzelnen EditText ändern

final Drawable originalDrawable = editText.getBackground(); 
    final Drawable wrappedDrawable = DrawableCompat.wrap(originalDrawable); 
    DrawableCompat.setTintList(wrappedDrawable, ColorStateList.valueOf(darkVibrantColor)); 
    editText.setBackground(wrappedDrawable); 

Dies gilt in der Tat Änderung Farbe eines EditText, aber leider ist es nicht nur die Linienfarbe des spezifischen EditText ändert Ich verwende aber die Linienfarbe aller EditTexte, die in meiner Anwendung verwendet werden. Ereignis, wenn sie sich in verschiedenen Aktivitäten befinden.

Wie ändere ich die Linienfarbe nur eines bestimmten EditText, ohne die Linienfarbe global zu ändern? Vielen Dank.

Update: Ich kann einen vordefinierten Stil nicht verwenden, da die Farbe dynamisch generiert wird, während die Anwendung ausgeführt wird.

+0

Sie Stil für Ihre editText Ansicht – SaravInfern

+0

Siehe [diese Antwort] erstellen können (http://stackoverflow.com/a/34004110/5744335) gegeben in Stackoverflow – Arshak

+0

I muss die Farbe programmatisch ändern, nicht mit einem Stil. Ich habe die Frage aktualisiert. – Androidicus

Antwort

0

die Sie interessieren, könnte Ihnen helfen,

In Ihrem style.xml

<style name="MyEditText" parent="Theme.AppCompat.Light"> 
    <item name="colorControlNormal">@color/indigo</item> 
    <item name="colorControlActivated">@color/pink</item> 
    <item name="android:padding">20dp</item> 
    <item name="android:textSize">16dp> 
    <item name="android:editTextColor">@color/black</item> 
    <item name="android:tint">@color/colorPrimary</item> 
</style> 

in Ihnen EditText Stil hinzufügen

<EditText 
    style="@style/MyEditText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Subject"/> 
+0

Danke. Leider muss ich die Farbe programmatisch ändern, da die Farbe von einem Bild erzeugt wird, während die App läuft. Die Frage wurde aktualisiert. – Androidicus

0

I-Code zu zur Verfügung gestellt haben programmatisch unterstreichen die Farbe ändern von EditText.

EditText editTextOne=(EditText) findViewById(R.id.edit_text_one); 
Drawable drawable=editTextOne.getBackground(); 
int color=Color.parseColor("#FFFFFF"); 
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); 
if (Build.VERSION.SDK_INT > 16) { 
    editTextOne.setBackground(drawable); 
} else { 
    editTextOne.setCompoundDrawables(null,null,drawable,null); 
} 
+0

Danke. Das hat leider auch nicht funktioniert. EditText ändert die Farbe, aber EditText in verschiedenen Aktivitäten ändert auch die Farbe. – Androidicus

+0

Ich habe diesen Code getestet, es ändert nicht die Unterstreichungsfarbe von EditText in anderen Aktivitäten. Verwenden Sie benutzerdefinierten EditText? @Androidicus – Arshak

+0

@Arshsak Nein Ich verwende die Standard-EditText-Implementierung. Das Mutieren des Drawable hat funktioniert, wie ich unten gepostet habe. Keine Ahnung, warum deine Lösung bei mir nicht funktioniert hat. Trotzdem danke. – Androidicus

0

Ich fand die Lösung. Es ist in this (nicht akzeptiert) Antwort geschrieben. Der Trick besteht darin, den Hintergrund zu zeichnen, nachdem er aus dem EditText abgerufen wurde.

Hier ist meine Arbeitscode:

final Drawable originalDrawable = editText.getBackground(); 
originalDrawable.mutate(); 
final Drawable wrappedDrawable = DrawableCompat.wrap(originalDrawable); 
DrawableCompat.setTintList(wrappedDrawable, ColorStateList.valueOf(darkVibrantColor)); 
editText.setBackground(wrappedDrawable);