如果将showAsAction设置为never,则SearchView无法正常工作

时间:2015-03-21 21:33:21

标签: android searchview

我想在SearchView的{​​{1}}中实施ActionBar。但是,我不想使用Activity使用ActionBar中的典型图标开始搜索。我想用一个简单的Menu

来做

这是我的Button

Fragment

public class FragmentContacts extends Fragment implements SearchView.OnQueryTextListener { private Button mButton; private MenuItem mSearchItem; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { // ... mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mSearchItem != null) { mSearchItem.expandActionView(); } } }); // ... } @Override public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) { mSearchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) mSearchItem.getActionView(); if (searchView != null) { searchView.setOnQueryTextListener(FragmentContacts.this); searchView.setQueryHint(getString(R.string.search_users_hint)); } super.onCreateOptionsMenu(menu, inflater); } }

menu.xml

这不起作用,但如果我将<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.herald.main.TestActivity"> <item android:id="@+id/action_search" android:title="@string/action_search_user" android:icon="@drawable/ic_search_white_48dp" app:showAsAction="never" app:actionViewClass="android.support.v7.widget.SearchView" /> </menu> 设置为app:showAsAction,则确实如此。不好的是,然后出现搜索图标,我不想要它。

知道怎么做吗?

由于

1 个答案:

答案 0 :(得分:0)

根据SearchView#getSearchIconId的source code,您可以在应用程序主题中覆盖R.attr.searchViewSearchIcon,例如使用透明图像,它应该完成这项工作。其他方式 - 只需创建自己的类来实现CollapsibleActionView并提供自己的实现。

但总的来说这是一个奇怪的想法 - 根据这种行为有一个指导方针,如果你想成功申请,最好遵循它。