如何更改Android SearchView文本

Kha*_*jar 84 android searchview

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

searchView.setText(searchToken);
Run Code Online (Sandbox Code Playgroud)

Kha*_*jar 156

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

searchView.setQuery(searchToken, false);
Run Code Online (Sandbox Code Playgroud)

  • 即使在设置了布尔参数false之后,它仍然会再次查询.任何建议都会有所帮助. (3认同)

kun*_*ata 28

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

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

要解决此问题,只需拨打searchView.clearFocus()setQuery()法无焦点的它,键盘不会显示在屏幕上.

例:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Run Code Online (Sandbox Code Playgroud)


Wow*_* Ot 11

这对我有用

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

    sItem.expandActionView();
    searchView.setQuery("your text", false);
Run Code Online (Sandbox Code Playgroud)

  • 简单、快速的救生解决方案! (2认同)

Max*_*Max 5

如果您想预先填写SearchView一些文本searchView.setQuery(text, false),则无法立即使用。原因是什么时候SearchView扩大

searchView.onActionViewExpanded()

会被调用,以调用searchView.setText("")并清除我们设置的所有文本。

解决办法是设置一个展开监听器,并设置预-FIL文本一旦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
}
Run Code Online (Sandbox Code Playgroud)