Android 使用支持库v21设置SearchView小部件的样式

Android 使用支持库v21设置SearchView小部件的样式,android,android-support-library,searchview,android-5.0-lollipop,material-design,Android,Android Support Library,Searchview,Android 5.0 Lollipop,Material Design,我试图使用新的AppCompat v21来设计SearchView小部件的样式,但我面临一些问题。无论我在“suggestionRowLayout”属性上设置了什么布局,它都不起任何作用。SearchView的建议下拉列表保持不变 我遇到的另一个问题是,当“强调色”与“原色”的颜色相同时,在searchview中无法区分插入符号的位置。您知道如何将SearchView中的强调色更改为仅应用于此处吗?我发现播放音乐也有同样的问题 我遵循Android开发者博客的指南:  根据我在SearchVi

我试图使用新的AppCompat v21来设计SearchView小部件的样式,但我面临一些问题。无论我在“suggestionRowLayout”属性上设置了什么布局,它都不起任何作用。SearchView的建议下拉列表保持不变

我遇到的另一个问题是,当“强调色”与“原色”的颜色相同时,在searchview中无法区分插入符号的位置。您知道如何将SearchView中的强调色更改为仅应用于此处吗?我发现播放音乐也有同样的问题

我遵循Android开发者博客的指南:




根据我在SearchView中看到的情况,源
suggestionRowLayout
在检索SearchView的属性时,以及在方法
getSuggestionRowLayout()
中,SearchView中的资源值会出现。另一方面,v7库的SuggestionAdapter的实现正在膨胀
abc\u搜索\u下拉菜单\u项目\u图标\u 2line

解决方案的想法:

refs.xml
的帮助下,尝试引用不同的布局。确保在
abc\u搜索\u下拉列表\u项目\u图标\u 2行中保留相同的ID

 <item type="layout" name="abc_search_dropdown_item_icons_2line">@layout/my_suggestion_row</item>
@layout/my\u suggestion\u行

建议RowLayout
也不适合我

在我的例子中,我只需要更改每行的背景色和文本颜色

因此,我刚刚在SuggestionAdapter中修改了从
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>


当然,您可以将背景设置为可绘制的选择器,以便单击突出显示。

我的问题是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"/>

这很有效!但根据新的Api,它支持设置SearchView的样式。这就是我在您的解决方法之前尝试过的:
@layout/searchview\u下拉列表