Android SearchViewテキストを変更する方法


91

SearchViewまたはそのようなもののためのsetText()メソッドはありますか?このようにsearchViewで検索テキストを設定しようとしていますが、このような方法はありません。

searchView.setText(searchToken);

回答:


164

不思議に思ったところ、setView()という名前のAPIにsearchViewテキストを設定するメソッドがあり、ブール値パラメーターを使用しないで検索を送信することを選択できることがわかりました。

searchView.setQuery(searchToken, false);

3
booleanパラメータをfalseに設定した後でも、クエリは再度実行されます。
Raj Trivedi、2014

私はこれtrueを実行しましたが、クエリも実行されるように2番目のパラメーターをに設定しましたが、クエリは適切に実行されますが、手動でフォーカスが与えられるまでテキストボックスは空白のままです。自動設定値も自動的に表示されるようにするにはどうすればよいですか?
nemesisfixx 2018年

1
大丈夫です。2番目の引数は「送信」です
roghayeh hosseini 2018年

33

を使用setQuery()して、テキストボックスのテキストを変更できます。

ただし、setQuery()メソッドは検索ビューのフォーカス状態をトリガーするため、このメソッドが呼び出された後、キーボードが画面に表示されます。

この問題を解決するには、単に呼び出しsearchView.clearFocus()た後setQuery()、それを非フォーカスする方法とキーボードが画面に表示されません。

例:

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

searchView.setIconified(false);を書き込んだため、表示されません。公演 。
lolo_house

7

事前に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
}

6

これは私のために働いたものです

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

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

1
シンプルで迅速な救命ソリューション!
eren130

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は元に戻りません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.