Android SearchView 텍스트를 변경하는 방법


92

SearchView에 대한 setText () 메서드가 있습니까? 이와 같이 searchView에서 검색 텍스트를 설정하려고 시도했지만 이와 같은 방법은 없습니다.

searchView.setText(searchToken);

답변:


165

궁금해하고 시도한 후 setQuery ()라는 API에 searchView 텍스트를 설정하고 검색을 제출하거나 부울 매개 변수를 사용하지 않도록 선택할 수있는 메서드가 있음을 발견했습니다.

searchView.setQuery(searchToken, false);

3
부울 매개 변수를 false로 설정 한 후에도 여전히 다시 쿼리합니다.
Raj Trivedi 2014

이 작업을 수행했지만 두 번째 매개 변수를로 설정하여 true쿼리도 실행되지만 쿼리가 잘 실행 되더라도 수동으로 포커스를받을 때까지 텍스트 상자가 비어 있습니다. 자동 설정 값도 자동으로 표시되도록하려면 어떻게해야합니까?
nemesisfixx

1
괜찮아. 두 번째 인수는 "제출"입니다
roghayeh 호세 이니

35

setQuery()텍스트 상자의 텍스트를 변경하는 데 사용할 수 있습니다 .

그러나 setQuery()메서드는 검색보기의 포커스 상태를 트리거하므로이 메서드가 호출 된 후 키보드가 화면에 표시됩니다.

이 문제를 해결하려면 searchView.clearFocus()after 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
}

좋은 대답입니다. 그러나 searchView.setOnQueryTextListener를 배포 한 경우 searchView.onActionViewExpanded ()searchView.setQuery () 모두 onQueryTextChange ()를 트리거하는 것에 주의하십시오 . 첫 번째 트리거는 두 번째 트리거에 제공 될 문자열을 아주 잘 비울 수 있습니다.
Bad Loser

7

이것은 나를 위해 일한 것입니다

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

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

1
간단하고 빠른 인명 구조 솔루션!
Eren

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.