bagaimana mengubah teks SearchView android

92

Apakah ada metode setText () untuk SearchView atau sesuatu seperti itu? Saya mencoba mengatur teks pencarian di SearchView seperti ini tetapi tidak ada metode untuk seperti ini.

searchView.setText(searchToken);
Khaled Annajar
sumber

Jawaban:

165

Setelah bertanya-tanya dan mencoba, saya menemukan bahwa ada metode dalam API bernama setQuery () yang Anda setel teks searchView dan Anda dapat memilih untuk mengirimkan pencarian atau tidak menggunakan parameter boolean.

searchView.setQuery(searchToken, false);
Khaled Annajar
sumber
3
Bahkan setelah menyetel parameter boolean false, ia masih membuat kueri lagi. Saran apa pun akan membantu.
Raj Trivedi
Saya telah melakukan ini, tetapi mengatur param ke-2 trueagar kueri dieksekusi juga, tetapi perhatikan bahwa meskipun kueri dijalankan dengan baik, kotak teks tetap kosong, sampai ketika diberi fokus secara manual. Bagaimana saya memastikan nilai setel otomatis ditampilkan secara otomatis juga?
nemesisfixx
1
tidak apa-apa. Argumen kedua adalah "menyerahkan"
roghayeh hosseini
35

Anda dapat menggunakan setQuery()untuk mengubah teks di kotak teks.

Namun, setQuery()metode memicu status fokus tampilan penelusuran, sehingga keyboard akan muncul di layar setelah metode ini dipanggil.

Untuk memperbaiki masalah ini, panggil saja searchView.clearFocus()setelah setQuery()metode untuk tidak fokus dan keyboard tidak akan muncul di layar.

Contoh:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
kunemata
sumber
Tidak muncul sejak menulis searchView.setIconified (false); acara.
lolo_house
8

inilah yang berhasil untuk saya

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

    sItem.expandActionView();
    searchView.setQuery("your text", false);
Wowo Ot
sumber
1
solusi hemat hidup yang sederhana dan cepat!
Eren
7

Jika Anda ingin pre-fil Anda SearchViewdengan beberapa teks searchView.setQuery(text, false)tidak akan bekerja di luar kotak. alasannya adalah saat SearchViewdiperluas

searchView.onActionViewExpanded()

panggil panggilan mana searchView.setText("")dan hapus teks apa pun yang telah kami tetapkan.

Solusinya adalah mengatur Perluas pendengar dan mengatur teks pra-file setelah SearchViewdiperluas

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
}
Max
sumber
Jawaban yang bagus. Namun berhati-hatilah terhadap searchView.onActionViewExpanded () dan searchView.setQuery () yang keduanya memicu onQueryTextChange () jika Anda telah menerapkan searchView.setOnQueryTextListener . Pemicu pertama mungkin sangat mengosongkan String yang akan disuplai ke pemicu kedua.
Bad Loser
0

Jika Anda ingin searchView diperluas dan dapat menyusut kembali menjadi ikon setelah pengguna mengetuk x (tutup), caranya adalah:

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.

CATATAN: Jika Anda mengembangkannya menggunakan:

searchView.onActionViewExpanded()

searchView tidak akan menyusut kembali setelah pengguna mengetuk x (tutup)

Putra Hardjono
sumber