2015-04-22 15 views
5

Da dove viene il colore verde? Ho provato a cambiare l'attributo accentColor, che funziona in altre parti dell'app, ma non qui.Come cambiare il colore delle maniglie EditText?

editText Colors Screenshot da app in Lollipop.

Come posso cambiare i colori di:

  • le drawable gestire il testo? come tingerli?
  • il colore di selezione tutto-sfondo?

E forse qualche consiglio per il futuro ... Come l'hai scoperto? Mi sono imbattuto in tutti questi confusi problemi di stile/colore. C'è qualche tipo di lista da qualche parte che mi dice, quale colore o attributo predefinito che devo sovrascrivere per un determinato componente?

risposta

4

Per cambiare il colore della maniglia si può fare come specificato here lo si fa usando lo stile come

<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> 

Per farlo controllare a livello di codice stessa domanda un'altra risposta here che avviene per mezzo di riflessione

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) { 
} 

Per cambiare il colore del testo selezionato puoi impostare textColorHighlight in xml come

android:textColorHighlight="#ff0000" 

attraverso lo stile si può fare come

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

grazie per l'aiuto, mi sono piaciute entrambe le risposte, ma la tua era più sui gestori di testo. Immagino che non ci sia modo di colorarli semplicemente? Sì, forse, prima prendi il drawable e poi tingalo ... – Lokkio

3

apportare modifiche al tuo styles.xml come segue

<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> 

Oppure si può aggiungere un attributo XML alla vostra EditText

android:textColorHighlight="@color/accent_translucent" 

Spero che risolva il tuo problema.

+0

Mi piace anche la tua risposta, perché imposta i colori su tutta l'app. Solo una cosa strana che non ho ancora capito. Uno dei miei edittexts non prende il sopravvento sul tema e l'altro editorext ... Sai forse, di una condizione in cui gli edittexts non prendono il controllo dello stile? problema di inflazione forse sbagliato? – Lokkio

+0

Grazie a @Lokkio. No, non ho affrontato questi problemi. Potrebbe essere dovuto a problemi di gonfiamento. – ch3tanz

Problemi correlati