Создание виджета SearchView с использованием библиотеки поддержки v21

Я пытаюсь создать виджет SearchView с помощью нового AppCompat v21, но у меня возникли некоторые проблемы. Независимо от того, какой макет я установил в атрибуте «suggestionRowLayout», он ничего не делает. Выпадающий список предложений SearchView остается таким же.

Другая проблема, с которой я столкнулся, – это когда цвет акцента имеет тот же цвет, что и «основной цвет», в поисковом образе невозможно отличить, где находится карет. Знаете ли вы, как я могу изменить цвет акцента в SearchView, который будет применяться там? Я обнаружил, что Play Music имеет ту же проблему.

Я следую руководству от Android Developers blog:

http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html

Согласно тому, что я видел в исходном suggestionRowLayout SearchView, значение ресурса RowLayout в SearchView возникает при извлечении атрибутов для SearchView и метода getSuggestionRowLayout() . С другой стороны, реализация библиотеки SuggestionAdapter v7 раздувается abc_search_dropdown_item_icons_2line .

Идея для временного решения:

Попробуйте ссылаться на разный макет с помощью refs.xml . Убедитесь, что вы сохраняете те же идентификаторы для просмотров, что и в abc_search_dropdown_item_icons_2line

  <item type="layout" name="abc_search_dropdown_item_icons_2line">@layout/my_suggestion_row</item> 

Моя проблема заключалась в том, что Searchview не был типом android.support.v7.widget.SearchView, поэтому все стили не применялись

  <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" app:showAsAction="ifRoom" app:actionViewClass="android.support.v7.widget.SearchView"/> 

suggestionsRowLayout тоже не работал для меня.

В моем случае мне просто нужно было изменить цвет фона для каждой строки и цвета текста.

Поэтому я просто изменил макет представления, возвращенного из newView() в моем приложении «Предложения»:

 public class SuggestionsAdapter extends CursorAdapter { public SuggestionsAdapter(Context context, Cursor cursor) { super(context, cursor, false); } @Override public void bindView(View view, Context context, Cursor cursor) { TextView tv = (TextView) view.findViewById(R.id.item); tv.setText(cursor.getString(COL_NAME)); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // I modified the layout of search_item.xml View view = inflater.inflate(R.layout.search_item, parent, false); return view; } } 

search_item.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@color/white" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="12dp" > <TextView android:id="@+id/item" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/red" /> </LinearLayout> 

Разумеется, вы можете установить фон в селектор, который можно выделить для бликов.