2013-03-20 19 views
5

Chcę zmienić kolor migającego kursora na SearchView w pasku czynności (Używam Sherbocka do zachowania zgodności). Do tej pory udało mi się zmienić kolor kursora dla elementu EditText. This SO post pomógł mi zrealizować to i styl używam do EditText wygląda następująco:Niestandardowy kolor kursora w SearchView

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

czerwony kursor wygląda następująco:

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

zrobiłem przyjrzeć realizacji Widget SearchView i tak jak ja używa on AutoCompleteTextView do wprowadzania tekstu. Ponieważ AutoCompleteTextView pochodzi z widżetu EditText, tak naprawdę nie rozumiem, dlaczego styl działa dla EditText, ale nie dla AutoCompleteTextView (a więc dla SearchView).

Czy ktoś zdołał zmienić kolor kursora w widżecie SearchView?

Odpowiedz

7

Właśnie znalazłem rozwiązanie, które działa. I zastępuje

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

z

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

i modyfikowane mój temat tak, że wygląda tak:

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

po prostu potrzebne, aby zastąpić androida atrybut: textCursorDrawable na temat SearchAutoCompleteTextView i to powinno zadziałać. – MaTriXy

+0

Tak, właśnie to zrobiłem. Dzięki – mvieghofer

+0

Czy można zmienić kolor domyślnego, ale nie można go losować? Użyłem colorControlActivated, ale to zmienia się więcej niż tylko kolor textthe ... –