Создание виджета 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> 

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

Intereting Posts
Android ImageView настраивает высоту и ширину установки родителя Подвеска в Google Play Store Проблемы с рендерингом при изменении темы Закрытие сокета при завершении приложения Должен ли я использовать статические или геттеры / сеттеры? Настройка значка пользовательского общего ресурса на панели действий ShareActionProvider без ActionBarSherlock Получить данные из интернет-ссылки в Android Функция отладки RxJava2 не работает должным образом в RecyclerView – Android Apache HttpClient HttpRequestRetryHandler никогда не вызывается Как проверить, какие намерения начали свою деятельность? Как легко удалить ненужные ресурсы локализации из добавленных библиотек в релизе APK Проблемы с JSON и памятью Android Studio: Сборка / отладка типа сборки – какая уместность у этого есть? Как расширить строку списка, когда мы нажимаем на нее в виде списка Как получить матрицу, в которой я переводил, затем повернуть, а затем перевести, а затем повернуть второй раз?