8

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

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

Я после гида от разработчиков Android блога:

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

ответ

5

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

Идея для обходного:

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

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

Это работает! Но согласно [документации] (http://android-developers.blogspot.com.es/2014/10/appcompat-v21-material-design-for-pre.html) новый Api поддерживает стилизацию SearchView. То, что я пытался до вашего обходного: '<имя стиля = "MySearchViewStyle" родитель = "Widget.AppCompat.SearchView"> <пункт имя = "suggestionRowLayout"> @ макет/searchview_dropdown ' – MrBrightside

+0

Это не работает для меня – JDJ

0

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

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

Так что я только изменил макет Посмотреть вернулся из newView() в моем SuggestionsAdapter:

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> 

Конечно, вы можете установить фон для растяжимой селектора для мыши Основные моменты.

1

Мой вопрос заключается в том, что 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"/> 
Смежные вопросы