当用作菜单的一部分时,为搜索小部件设置提示文本

时间:2011-09-17 18:01:43

标签: java android

我有一个菜单项作为操作栏菜单的一部分,我将动作视图类设置为搜索小部件,如下所示:

   <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

5 个答案:

答案 0 :(得分:87)

  

您可以使用api setQueryHint(CharSequence提示)

将提示文本设置为searchview
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setQueryHint("Query Hint");

Refer the documentation

答案 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;
}

Material Search View library github link