android SearchView metni nasıl değiştirilir


92

SearchView veya buna benzer bir setText () yöntemi var mı? SearchView'de arama metnini bu şekilde ayarlamaya çalışıyorum ama bunun için bir yöntem yok.

searchView.setText(searchToken);

Yanıtlar:


165

Merak edip denedikten sonra, API'de setQuery () adlı, searchView metnini ayarladığınız ve aramayı göndermeyi veya boole parametresini kullanmamayı seçebileceğiniz bir yöntem olduğunu öğrendim.

searchView.setQuery(searchToken, false);

3
Boolean parametresini false olarak ayarladıktan sonra bile yine de sorgulama yapar. Herhangi bir öneri yardımcı olabilir.
Raj Trivedi

Bunu yaptım, ancak 2. parametrenin ayarlanması, truesorgunun da yürütülmesi için, ancak sorgu iyi yürütülse de, manuel olarak odak verilene kadar metin kutusunun boş kaldığını unutmayın. Otomatik ayar değerinin de otomatik olarak görüntülenmesini nasıl sağlayabilirim?
nemesisfixx

1
tamam. ikinci argüman "gönder"
roghayeh hosseini

35

setQuery()Metin kutusundaki metni değiştirmek için kullanabilirsiniz .

Bununla birlikte, setQuery()yöntem bir arama görünümünün odak durumunu tetikler, bu nedenle bu yöntem çağrıldıktan sonra ekranda bir klavye gösterilir.

Bu sorunu çözmek için searchView.clearFocus()sonra arayınsetQuery() onu unfocus yöntem ve klavye ekranda gösterilmez.

Misal:

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

SearchView.setIconified (false) yazdığından beri gösterilmez; göstermek .
lolo_house

8

bu benim için çalıştı

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

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

1
basit, hızlı hayat kurtaran çözüm!
Eren

7

Önceden dosyalamak istiyorsanız SearchView, bazı metinler searchView.setQuery(text, false)kutudan çıkmaz. nedeni ne SearchViewzaman genişlediğidir

searchView.onActionViewExpanded()

hangi çağrılar çağrılır searchView.setText("")ve ayarladığımız herhangi bir metni temizler.

Bir kez Çözüm bir dinleyici Expand set ve ön fil metni ayarlamaktır SearchViewgenişletilir

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
}

Mükemmel cevap. Ama dikkat searchView.onActionViewExpanded () ve ) (searchView.setQuery hem tetikleme () onQueryTextChange dağıtımı yaptıysanız searchView.setOnQueryTextListener . İlk tetik, ikinci tetikleyiciye sağlanmak üzere olan Dizeyi çok iyi boşaltabilir.
Kötü Kaybeden

0

SearchView'ün genişlemesini ve kullanıcı x'e (kapat) dokunduktan sonra bir simgeye küçültülebilmesini istiyorsanız, yol şudur:

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.

NOT: Şunları kullanarak genişletirseniz:

searchView.onActionViewExpanded()

searchView, kullanıcı x'e (kapat) dokunduktan sonra küçülmez

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.