Helpex - Trao đổi & giúp đỡ Đăng nhập
74

Có một phương thức setText () cho SearchView hoặc một cái gì đó tương tự không? Tôi cố gắng đặt văn bản tìm kiếm trong searchView như thế này nhưng không có phương pháp nào cho việc này.

searchView.setText(searchToken);
74 hữu ích 0 bình luận 41k xem chia sẻ
145

Sau khi tự hỏi và thử tôi đã phát hiện ra rằng có một phương thức trong API có tên setQuery () mà bạn đặt văn bản searchView và bạn có thể chọn gửi tìm kiếm hoặc không sử dụng tham số boolean.

searchView.setQuery(searchToken, false);
145 hữu ích 5 bình luận chia sẻ
23

Bạn có thể sử dụng setQuery()để thay đổi văn bản trong hộp văn bản.

Tuy nhiên, setQuery()phương thức kích hoạt trạng thái tiêu điểm của chế độ xem tìm kiếm, do đó bàn phím sẽ hiển thị trên màn hình sau khi phương thức này được gọi.

Để khắc phục sự cố này, chỉ cần gọi searchView.clearFocus()theo setQuery()phương thức để không tập trung vào nó và bàn phím sẽ không hiển thị trên màn hình.

Thí dụ:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
23 hữu ích 1 bình luận chia sẻ
3

Nếu bạn muốn quay trước SearchViewvới một số văn bản searchView.setQuery(text, false)sẽ không hoạt động. Lý do là khi SearchViewđược mở rộng

searchView.onActionViewExpanded()

được gọi mà gọi searchView.setText("")và xóa bất kỳ văn bản chúng tôi đã thiết lập.

Giải pháp là đặt trình nghe Mở rộng và đặt văn bản trước khi quay SearchViewđược mở rộng

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
}
3 hữu ích 0 bình luận chia sẻ
1

Đây là những gì làm việc cho tôi

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

    sItem.expandActionView();
    searchView.setQuery("your text", false);
1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ android searchview , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading