我有一个菜单项作为操作栏菜单的一部分,我将动作视图类设置为搜索小部件,如下所示:
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView" />
这使得搜索小部件在单击时弹出 - 但是,我希望它始终可见,并且我还希望能够设置查询提示等。
当我尝试调用SearchView searchItem = (SearchView) menu.findItem(R.id.menu_search)
来获取对它的引用时,它会抛出错误,因为该项无法转换为SearchView
。
答案 0 :(得分:87)
您可以使用api setQueryHint(CharSequence提示)
将提示文本设置为searchview
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setQueryHint("Query Hint");
答案 1 :(得分:12)
默认情况下,这将使ActionView搜索框始终显示:
searchView.setIconifiedByDefault(false);
这告诉搜索框始终展开。图标化表示您需要点按图标才能显示搜索框。
答案 2 :(得分:2)
试试getActionView; findItem返回一个MenuItem,而不是它使用的View
(SearchView)menu.findItem(R.id.menu_search).getActionView()
答案 3 :(得分:0)
最低API级别应为11然后错误将不会显示
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
答案 4 :(得分:0)
我添加了以下代码行,并且行得通。
searchView.setHint(getString(R.string.places));
searchView.setHintTextColor(R.color.black);
示例代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_item,menu);
MenuItem item = menu.findItem(R.id.action_search);
MaterialSearchView searchView = findViewById(R.id.searchview);
searchView.setMenuItem(item);
searchView.setHint(getString(R.string.places));
searchView.setHintTextColor(R.color.black);
return true;
}