2015-04-22 9 views
5

Woher kommt die grüne Farbe? Ich habe versucht, das accentColor Attribut zu ändern, das in anderen Teilen der App funktioniert, aber nicht hier.Wie ändere ich die Farbe von EditText-Handles?

editText Colors Screenshot von App in Lollipop.

Wie kann ich die Farben ändern:

  • den Text Griff Drawables? wie man sie tönt?
  • die Select-All-Hintergrundfarbe?

Und vielleicht ein paar Tipps für die Zukunft ... Wie haben Sie herausgefunden? Ich bin auf all diese verwirrenden Farb- und Stylingprobleme gestoßen. Gibt es irgendeine Art von Liste, die mir sagt, welche Standardfarbe oder welches Attribut ich für eine bestimmte Komponente überschreiben muss?

Antwort

4

Für den Griff Farbe ändern Sie wie angegeben here tun können Sie es mit Stil als

<style name="MyCustomTheme" parent="@style/MyNotSoCustomTheme"> 
     <item name="android:textSelectHandle">@drawable/text_select_handle_middle</item> 
     <item name="android:textSelectHandleLeft">@drawable/text_select_handle_left</item> 
     <item name="android:textSelectHandleRight">@drawable/text_select_handle_right</item> 
</style> 

Denn es programmatisch gleiche Frage eine andere Antwort here tun überprüfen, die Reflexion erfolgt über

try { 
    final Field fEditor = TextView.class.getDeclaredField("mEditor"); 
    fEditor.setAccessible(true); 
    final Object editor = fEditor.get(editText); 

    final Field fSelectHandleLeft = editor.getClass().getDeclaredField("mSelectHandleLeft"); 
    final Field fSelectHandleRight = editor.getClass().getDeclaredField("mSelectHandleRight"); 
    final Field fSelectHandleCenter = editor.getClass().getDeclaredField("mSelectHandleCenter"); 

    fSelectHandleLeft.setAccessible(true); 
    fSelectHandleRight.setAccessible(true); 
    fSelectHandleCenter.setAccessible(true); 

    final Resources res = context.getResources(); 

    fSelectHandleLeft.set(editor, res.getDrawable(R.drawable.text_select_handle_left)); 
    fSelectHandleRight.set(editor, res.getDrawable(R.drawable.text_select_handle_right)); 
    fSelectHandleCenter.set(editor, res.getDrawable(R.drawable.text_select_handle_middle)); 
} catch (final Exception ignored) { 
} 

Um die ausgewählte Textfarbe zu ändern, können Sie textColorHighlight in xml als

setzen 0

durch Stil können Sie tun, als

<item name="android:textColorHighlight">@color/m_highlight_blue</item> 
+0

danke für die Hilfe, ich mochte beide Antworten, aber Ihre war mehr über die Texthandler. Ich denke, es gibt keine Möglichkeit, sie einfach zu tönen? yeah vielleicht das Zeichen zuerst und dann tönt es ... – Lokkio

3

Änderungen an Ihrem styles.xml Stellen wie folgt

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorControlHighlight">@color/accent_translucent</item> 
    <item name="android:colorControlHighlight">@color/accent_translucent</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="selectableItemBackground">@drawable/selectable_item_background</item> 
    <item name="android:selectableItemBackground">@drawable/selectable_item_background</item> 

</style> 

<color name="primary">#00BCD4</color> 
<color name="primary_dark">#0097A7</color> 
<color name="accent">#FFEB3B</color> 
<color name="accent_translucent">#80FFEB3B</color> 
<color name="accent_bright">#FFF493</color> 

Oder Sie können ein XML-Attribut zu Ihrer hinzufügen EditText

android:textColorHighlight="@color/accent_translucent" 

Ich hoffe, es löst Ihr Problem.

+0

Ich mag auch Ihre Antwort, weil es die Farben über die ganze App setzt. Nur eine seltsame Sache, die ich noch nicht herausgefunden habe. Einer meiner Edittexte übernimmt das Thema nicht und der andere Editiertext ... Weißt du vielleicht, dass Edittexte das Styling nicht übernehmen? vielleicht falsches aufblasen Problem? – Lokkio

+0

Danke @Lokkio. Nein, ich habe solche Probleme nicht gesehen. Es kann aufgrund von Inflationsproblemen sein. – ch3tanz