如何更改android SearchView文本

时间:2013-01-20 16:49:24

标签: android searchview

是否有针对SearchView的setText()方法或类似的东西? 我尝试在searchView中设置搜索文本,但是没有像这样的方法。

searchView.setText(searchToken);

5 个答案:

答案 0 :(得分:148)

在想知道并尝试之后我发现API中有一个名为setQuery()的方法,您可以设置searchView文本,也可以选择使用布尔参数提交搜索。

searchView.setQuery(searchToken, false);

答案 1 :(得分:23)

您可以使用setQuery()更改文本框中的文字。

但是,setQuery()方法会触发搜索视图的焦点状态,因此在调用此方法后,屏幕上会显示一个键盘。

要解决此问题,请在searchView.clearFocus()方法后调用setQuery()以取消对焦,并且键盘不会显示在屏幕上。

示例:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();

答案 2 :(得分:3)

如果您想用一些文本SearchView预填充searchView.setQuery(text, false),则将无法使用。原因是SearchView展开

searchView.onActionViewExpanded()

被称为呼叫searchView.setText("")并清除我们设置的所有文本。

解决方法是在SearchView展开后设置展开监听器并设置预过滤文本

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.main, menu)
    val searchView = menu.findItem(R.id.action_search).actionView as SearchView
    menu.findItem(R.id.action_search).setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
        override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
            // it is important to call this before we set our own query text.
            searchView.onActionViewExpanded()
            searchView.setQuery("Prefil Text", false)
            return true
        }

        override fun onMenuItemActionCollapse(item: MenuItem?) = true
    })
    return true
}

答案 3 :(得分:1)

这对我有用

    MenuItem sItem = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) sItem.getActionView();

    sItem.expandActionView();
    searchView.setQuery("your text", false);

答案 4 :(得分:0)

如果您想扩展searchView并可以在用户点击x(关闭)后将其收缩回一个图标,则方法是:

searchView.isIconified = false // Expand it
searchView.setQuery("your text here", false) // true if you want to submit, otherwise false
searchView.clearFocus() // so the keyboard is not show up.

注意: 如果使用以下命令将其展开:

searchView.onActionViewExpanded()

用户点击x(关闭)后,searchView不会缩小