Java SearchView没有';在操作栏中不显示图标,并显示“作为操作”视图和“作为操作”视图
Android图标不会显示在ActionBar中,相反,如果有空间,则会显示“搜索”一词 我们如何使用它:Java SearchView没有';在操作栏中不显示图标,并显示“作为操作”视图和“作为操作”视图,java,android,android-appcompat,Java,Android,Android Appcompat,Android图标不会显示在ActionBar中,相反,如果有空间,则会显示“搜索”一词 我们如何使用它: public static MenuItem addSearchItem(Menu menu, SearchView searchView) { MenuItem item = menu.add(Menu.NONE, R.id.search_item, Menu.NONE, R.string.search_label); MenuItemCompat.setShowAsAc
public static MenuItem addSearchItem(Menu menu, SearchView searchView) {
MenuItem item = menu.add(Menu.NONE, R.id.search_item, Menu.NONE, R.string.search_label);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
MenuItemCompat.setActionView(item, searchView);
...
}
这样称呼:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
if (itemsLoaded) {
inflater.inflate(R.menu.new_episodes, menu);
final SearchView sv = new SearchView(getActivity());
MenuItemUtils.addSearchItem(menu, sv);
但是,如果我们只使用SHOW_AS_ACTION_If_ROOM,那么我们将获得图标,但是如果搜索被折叠到菜单中,SearchView将无法工作
你知道为什么会这样吗
更新
即使在菜单xml中定义了SearchView,也会发生此行为它似乎只有在未指定“collapseActionView”时才能正常工作。
布局:
什么是“搜索视图”?添加了一个链接。Android SearchView:我知道,但什么是“SearchView”对象?你是如何定义它的?邮政编码。为什么不在menu.xml中声明呢?发布了更多代码。我不知道为什么菜单上没有注明。我不是最初的维护者。在某些情况下,我们希望它能在菜单中显示出来之前,它一直工作得很好。我将研究迁移到xml布局,但如果可能的话,我更喜欢一个更简单的修复。另外,如果您能理解为什么这样做不起作用,那就太好了。现在,对于使用菜单xml进行布局的代码,结果也是一样的。
<item android:id="@+id/action_search"
android:icon="?attr/searchIcon"
android:title="@string/search_label"
custom:showAsAction="ifRoom|collapseActionView"
custom:actionViewClass="android.support.v7.widget.SearchView"/>
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
if (itemsLoaded) {
inflater.inflate(R.menu.new_episodes, menu);
final MenuItem searchItem = menu.findItem(R.id.action_search);
final SearchView sv = (SearchView) MenuItemCompat.getActionView(searchItem);
sv.setQueryHint(getString(R.string.search_hint));
SearchViewCompat.setOnQueryTextListener(sv, new SearchViewCompat.OnQueryTextListenerCompat() {
@Override
public boolean onQueryTextSubmit(String s) {
sv.clearFocus();
((MainActivity) getActivity()).loadChildFragment(SearchFragment.newInstance(s));
return true;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});