具有自定义主题的EditText在选择句柄下显示下划线

时间:2016-06-02 09:37:06

标签: android android-edittext android-theme

我正在尝试通过应用主题来修改EditText的下划线颜色。

风格:

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

基本上它可以工作,但是当我尝试选择或移动光标时,选择手柄也有下划线。您可以在屏幕截图中看到这一点。

Screenshot

有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:6)

您可以将此款式用作

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

或者,您可以将主题分开以引用editTextStyle属性。

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

好的,但这些下划线来自哪里?

android:theme是View的一个属性,当您将样式设置为android:theme时,该样式将被ContextThemeWrapper包含,并且在通胀视图中具有上下文主题。

这意味着,如果您将android:theme属性设置为包含android:background项的样式,如

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

此主题所有者的每个子视图都将具有绿色背景。

"Widget.AppCompat.EditText"是一种样式,并引用?attr/editTextBackground作为"android:background"。在v21 / values-21.xml文件@drawable/abc_edit_text_material中定义为editTextBackground

因此,对于您的示例,@drawable/abc_edit_text_material将成为EditText和SelectionHandlers的背景。

答案 1 :(得分:2)

您应该删除父属性。这只是API 23设备引起的。

<style name="MyTheme.EditText">
    <item name="colorControlActivated">@color/green</item>
</style>

答案 2 :(得分:0)

我遇到了同样的问题。

我的布局在蓝框内显示了一个Edittext。在那里我想要一个白色文本和一个白色下划线和一个白色选择控件。 我在我的AppTheme中设置了所有内容。一切都好!

但我也有一个Recyclerview吹蓝盒子。 RecyclerView具有包含Edittext的白卡。白卡,下划线和控制在白卡中毫无意义。 :)

所以我试图将文本的颜色,下划线和控件更改为深灰色。但没有成功。我在控件中遇到了与此问题相同的问题。

我尝试使用已解决的答案,但这对我没有帮助。 也许是我的错,不知道。

所以我在这里发布我的解决方案,甚至已经回答的问题。

在styles.xml中我添加了:

<style name="RecyclerEditText">
    <item name="colorAccent">@color/darkGray</item>
    <item name="colorControlNormal">@color/darkGray</item>
    <item name="colorControlActivated">@color/darkGray</item>
</style>

并在布局xml中添加了edittext:

android:textColor="@color/darkGray"
android:textColorHint="@color/darkGray"
android:theme="@style/RecyclerEditText"

-

现在我的控件图标没有偏移,也没有双下划线。

非常感谢@litmon! 你把我推到了'#34;删除父母&#34;想法。

相关问题