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?
I had the same issue.
My layout shows a Edittext inside a blue box. There i wanted to have a white text and a white underline and a white selection control. I've set all in my AppTheme. All fine!
But i also had a Recyclerview blow the blue box. The RecyclerView has white cards that contains Edittext. White text, underline and control makes no sense in white cards. :)
So i tried to change the color of the text, underline and controls to dark gray. But with no success. I had the same issues with the control like in this question.
I tried using the solved answer, but this didn't helped me. Maybe my fault, don't know.
So i post here my solution, even the question already answered.
Inside the styles.xml i added:
and in the layout xml i added inside edittext:
--
Now i have no offset in control icon, and no double underline.
Thanks a lot @litmon ! You pushed me to the "remove parent" idea.
You can use this style as a
Or, you can separate your theme for referencing the editTextStyle attribute.
Alright, but where are these underlines come from?
android:theme
is an attribute of View and when you set a style asandroid: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 containsandroid:background
item likeevery 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 aseditTextBackground
.So, for your example,
@drawable/abc_edit_text_material
becomes a background of your EditText and SelectionHandlers.You should remove parent attribute. This is caused only API 23 device.