SearchView 中的自定义光标颜色

Posted

技术标签:

【中文标题】SearchView 中的自定义光标颜色【英文标题】:Custom cursor color in SearchView 【发布时间】:2013-03-09 18:37:30 【问题描述】:

我想更改操作栏中SearchView 中闪烁光标的颜色(为了兼容性,我正在使用操作栏 Sherlock)。到目前为止,我已经设法更改了 EditText 元素的光标颜色。 This SO post 帮助我实现了这一点,而我用于 EditText 的样式如下所示:

<style name="CustomTheme" parent="Theme.Sherlock.Light">
    <item name="android:editTextStyle">@style/edittext_style</item>
</style>

<style name="edittext_style" parent="@android:style/Widget.EditText">
    <item name="android:textCursorDrawable">@drawable/red_cursor</item>
</style>

红色光标如下所示:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle" >
    <gradient android:startColor="@color/darkRed" 
              android:endColor="@color/darkRed" />
    <size android: />
</shape>

我确实查看了 SearchView 小部件的实现,并且我认为它使用 AutoCompleteTextView 进行文本输入。由于 AutoCompleteTextView 派生自 EditText 小部件,我真的不明白为什么该样式适用于 EditText 但不适用于 AutoCompleteTextView(因此适用于 SearchView)。

有没有人设法改变 SearchView 小部件中光标的颜色?

【问题讨论】:

【参考方案1】:

我刚刚找到了一个可行的解决方案。我替换了

<style name="edittext_style" parent="@android:style/Widget.EditText">
    <item name="android:textCursorDrawable">@drawable/red_cursor</item>
</style>

<style name="SearchViewStyle" parent="Widget.Sherlock.Light.SearchAutoCompleteTextView">
    <item name="android:textCursorDrawable">@drawable/red_cursor</item>
</style>

并修改了我的主题,使其看起来像这样:

<style name="CustomTheme" parent="Theme.Sherlock.Light">
    ...
    <item name="searchAutoCompleteTextView">@style/SearchViewStyle</item>
    ...
</style>

【讨论】:

您只需要覆盖 SearchAutoCompleteTextView 主题上的属性 android:textCursorDrawable 就可以了。 是的,我就是这么做的。谢谢 是否可以更改默认颜色的颜色,但不能更改可绘制对象的颜色?我使用了 colorControlActivated ,但这不仅仅改变了文本插入符号的颜色......

以上是关于SearchView 中的自定义光标颜色的主要内容,如果未能解决你的问题,请参考以下文章

自定义searchview的编辑框,搜索按钮,删除按钮,光标等

Android SearchView 自定义SearchIcon和字体颜色大小

WPF中的自定义光标?

Android ActionBar 自定义搜索视图

如何更改 SearchView 上的默认图标,以便在 Android 的操作栏中使用?

在 searchview 中键入时如何更改 listview-cursoradapter 中搜索文本的背景颜色?