SearchView 的建议列表中没有分隔符
No divider in suggestion list of SearchView
关于custom suggestion,我仿效了Google的例子。我的项目很简单:
- 一个
ContentProvider.class
- 一个
SqlOpenHelper.class
- 一个
MainActivity.class
- 一个
menu
和一个layout
,没有创建其他XML layout/drawable。
我在 AppCompatActivity
(AppCompat.v7) 的 Toolbar
中有一个 SearchView
(support.v7) 并使用 Android 5.1.1 和 Android 4.3.
菜单中的SearchView
很简单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
</menu>
它可以从一个简单的 CustomContentProvider
中得到建议。但是,建议列表中没有分隔线(见图片)。之前我还在另一个应用程序的正常布局中创建了类似的搜索功能。它工作正常,但这次 SearchView 在 Menu/Toolbar.
我可以用这段代码更改建议列表的背景:
private void initSearchView(MenuItem searchItem) {
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
SearchView searchView = (SearchView) searchItem.getActionView();
SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
/**
* Todo: Change row style of suggestion List
*/
if (autoCompleteTextView != null) {
autoCompleteTextView.setDropDownBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.search_suggestion_row));
}
searchView.setSearchableInfo(searchableInfo);
}
我曾尝试更改 Activity
的主题,但没有成功,我认为我不应该再次创建行布局和 ListAdapter
。
更改行样式或显示分隔线的任何解决方案。感谢您的帮助!
分隔符没有出现,因为它是 lollipop 中的一个 错误,如果您覆盖 **isEnabled()**
方法,就会发生这种情况,请参考此处,您可以了解更多信息。
https://code.google.com/p/android/issues/detail?id=83055
关于custom suggestion,我仿效了Google的例子。我的项目很简单:
- 一个
ContentProvider.class
- 一个
SqlOpenHelper.class
- 一个
MainActivity.class
- 一个
menu
和一个layout
,没有创建其他XML layout/drawable。
我在 AppCompatActivity
(AppCompat.v7) 的 Toolbar
中有一个 SearchView
(support.v7) 并使用 Android 5.1.1 和 Android 4.3.
菜单中的SearchView
很简单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
</menu>
它可以从一个简单的 CustomContentProvider
中得到建议。但是,建议列表中没有分隔线(见图片)。之前我还在另一个应用程序的正常布局中创建了类似的搜索功能。它工作正常,但这次 SearchView 在 Menu/Toolbar.
我可以用这段代码更改建议列表的背景:
private void initSearchView(MenuItem searchItem) {
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
SearchView searchView = (SearchView) searchItem.getActionView();
SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text);
/**
* Todo: Change row style of suggestion List
*/
if (autoCompleteTextView != null) {
autoCompleteTextView.setDropDownBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.search_suggestion_row));
}
searchView.setSearchableInfo(searchableInfo);
}
我曾尝试更改 Activity
的主题,但没有成功,我认为我不应该再次创建行布局和 ListAdapter
。
更改行样式或显示分隔线的任何解决方案。感谢您的帮助!
分隔符没有出现,因为它是 lollipop 中的一个 错误,如果您覆盖 **isEnabled()**
方法,就会发生这种情况,请参考此处,您可以了解更多信息。
https://code.google.com/p/android/issues/detail?id=83055