SearchView中的自定义光标颜色

时间:2013-03-20 15:10:58

标签: android styles android-actionbar actionbarsherlock

我想更改操作栏中SearchView中闪烁光标的颜色(为了兼容性,我使用的是Actionbar 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:width="1dp" />
</shape>

我确实看了一下SearchView小部件的实现,虽然它使用了AutoCompleteTextView来输入文本。由于AutoCompleteTextView是从EditText小部件派生的,我不太明白为什么样式适用于EditText而不适用于AutoCompleteTextView(因此也适用于SearchView)。

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

1 个答案:

答案 0 :(得分:8)

我刚刚找到了一个有效的解决方案。我取代了

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