android - ошибка настройки поискового предложения для темы AppCompat

Я пытаюсь настроить тему AppCompat (Base.Theme.AppCompat.Light.DarkActionBar), чтобы изменить цвет фона и текста для предложения поиска.
Вот мой файл стиля:

<resources>
    <!-- extend one of the Theme.AppCompat themes -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- customize the color palette -->
        <item name="colorPrimary">@color/material_blue_500</item>
        <item name="colorPrimaryDark">@color/material_blue_700</item>
        <item name="colorAccent">@color/material_blue_200</item>
        <item name="android:windowBackground">@color/material_blue_200</item>
        <item name="android:actionBarStyle">@style/ActionBar</item>
        <item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item>
    </style>

    <!-- Actionbar Theme -->
    <style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/material_blue_200</item>
        <item name="android:icon">@drawable/ic_launcher</item>
    </style>

    <style name="ActionBarWidget" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- SearchView customization-->
        <item name="searchViewSearchIcon">@drawable/ic_action_search</item>
        <item name="searchViewCloseIcon">@drawable/ic_action_remove</item>
        <item name="searchViewTextField">@drawable/ab_textfield_searchview</item>
        <item name="searchViewAutoCompleteTextView">@style/AutoCompleteTextView</item>
    </style>

    <style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textCursorDrawable">@null</item>
        <item name="android:textColorHighlight">@color/material_blue_200</item>
    </style>

</resources>

После компиляции я получаю такие ошибки:
Ошибка:(24, 21) Не найдено ресурса, соответствующего указанному имени: attr 'searchViewAutoCompleteTextView'.
Ошибка:(22, 21) Не найден ресурс, соответствующий указанному имени: attr 'searchViewCloseIcon'.
Ошибка:(21, 21) Не найдено ресурса, соответствующего указанному имени: attr 'searchViewSearchIcon'.
Ошибка:(23, 21) Не найдено ресурса, соответствующего указанному имени: attr 'searchViewTextField'.
Любое предложение?

2 ответа

Привет, Начиная с APPCOMPAT V21, вы должны изменить свой код на это:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="searchViewStyle">@style/AppTheme.SearchView</item>
</style>

<style name="AppTheme.SearchView" parent="Widget.AppCompat.SearchView">
    <item name="searchIcon">@drawable/your_search_icon</item>
    <item name="closeIcon">@drawable/your_close_icon</item>
</style>

Вместо searchViewTextField для стилизации searchView EditText используйте android:autoCompleteTextViewStyle в основном стиле приложения

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    ....
    <item name="android:autoCompleteTextViewStyle">@style/AutoCompleteTextView</item>

</style>
<style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textCursorDrawable">@null</item>
    <item name="android:textColorHighlight">@color/search_text_color</item>
</style>
Другие вопросы по тегам