我想在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
,则确实如此。不好的是,然后出现搜索图标,我不想要它。
知道怎么做吗?
由于
答案 0 :(得分:0)
根据SearchView#getSearchIconId的source code,您可以在应用程序主题中覆盖R.attr.searchViewSearchIcon,例如使用透明图像,它应该完成这项工作。其他方式 - 只需创建自己的类来实现CollapsibleActionView并提供自己的实现。
但总的来说这是一个奇怪的想法 - 根据这种行为有一个指导方针,如果你想成功申请,最好遵循它。