EditText with custom theme shows underline under selection handle(具有自定义主题的 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 在选择句柄下显示下划


- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- android 4中的android RadioButton问题 2022-01-01