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

EditText with custom theme shows underline under selection handle(具有自定义主题的 EditText 在选择句柄下显示下划线)

本文介绍了具有自定义主题的 EditText 在选择句柄下显示下划线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

i am trying to modify the underline color of a EditText by applying a theme.

风格:

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

编辑文本:

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

推荐答案

你可以把这个样式当作一个

You can use this style as a

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

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

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

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

android:theme 是 View 的一个属性,当您将样式设置为 android:theme 时,该样式将由具有上下文主题的 ContextThemeWrapper 包装,同时膨胀查看.

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.

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

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" 是一种样式,并将 ?attr/editTextBackground 引用为 "android:background".而在 v21/values-21.xml 文件中,@drawable/abc_edit_text_material 被定义为 editTextBackground.

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

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

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

这篇关于具有自定义主题的 EditText 在选择句柄下显示下划线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:具有自定义主题的 EditText 在选择句柄下显示下划

基础教程推荐