EditText with custom theme shows underline under selection handle

android, android-edittext, android-theme

Solution

You can use this style as a

<EditText 
   style="@style/MyTheme.EditText"/>

Or, you can separate your theme for referencing the editTextStyle attribute.

<style name="MyEditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="colorControlActivated">@color/green</item>
</style>

<style name="MyTheme.EditText">
    <item name="editTextStyle">@style/MyEditTextStyle</item>
</style>

<EditText
    android:theme="@style/MyTheme.EditText"/>

Alright, but where are these underlines come from?

`android:theme` is an attribute of View and when you set a style as `android:theme`, that style will be wrapped by ContextThemeWrapper with context theme while in inflation of view.

So that means, if you set `android:theme` property with style that contains `android:background` item like

<item name="android:background">@color/green</item>

every child view of this theme owner will be have a green background.

`"Widget.AppCompat.EditText"` is a style and references `?attr/editTextBackground` as a `"android:background"`. And in v21/values-21.xml file `@drawable/abc_edit_text_material` is defined as `editTextBackground`.

So, for your example, `@drawable/abc_edit_text_material` becomes a background of your EditText and SelectionHandlers.

Problem

i am trying to modify the underline color of a EditText by applying a theme. Style: ``` <style name="MyTheme.EditText" parent="Widget.AppCompat.EditText"> <item name="colorControlActivated">@color/green</item> </style> ``` EditText: ``` <EditText android:id="@+id/editText_amount" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/hint_enter_amount" android:theme="@style/MyTheme.EditText"/> ``` Basically it works, but when i try to select or move the cursor the selection handle is also underlined. You can see this in the screenshot. Does someone know how to fix this?

Original source