як змінити андроїд текст SearchView - -


91

Чи існує метод setText () для SearchView або щось подібне? Я намагаюся встановити текст пошуку в searchView таким чином, але для цього немає методу.

searchView.setText(searchToken);

Відповіді:


164

Здивувавшись та спробувавши, я з’ясував, що в API є метод з назвою setQuery (), який ви встановлюєте текстом searchView, і ви можете подати пошук або не використовувати логічний параметр.

searchView.setQuery(searchToken, false);

3
Навіть після встановлення логічного параметра false він все одно знову запитує. Будь-які пропозиції допоможуть.
Радж Тріведі

Я зробив це, але встановив другий параметр trueтак, щоб запит також виконувався, але зауважте, що, хоча запит виконується добре, текстове поле залишається порожнім до тих пір, поки не буде зосереджено вручну. Як я можу забезпечити, щоб значення автоматичного встановлення відображалося автоматично також?
nemesisfixx

1
нічого страшного. другий аргумент - "подати"
roghayeh hosseini

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("")і очищає будь-який встановлений нами текст.

Рішення полягає в тому, щоб встановити Expand listener і встановити текст попереднього фільму, коли його 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()

searchView не зменшиться після натискання користувачем x (закрити)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.