cách thay đổi văn bản SearchView android


91

Có phương thức setText () cho SearchView hoặc phương thức nào đó 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 như thế này.

searchView.setText(searchToken);

Câu trả lời:


164

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);

3
Ngay cả sau khi đặt tham số boolean false, nó vẫn truy vấn lại.
Raj Trivedi

Tôi đã làm điều này, nhưng đặt tham số thứ 2 để truetruy vấn cũng được thực thi, nhưng lưu ý rằng mặc dù truy vấn được thực thi tốt, hộp văn bản vẫn trống, cho đến khi được đưa ra tiêu điểm theo cách thủ công. Làm cách nào để đảm bảo giá trị tự động đặt cũng được hiển thị tự động?
nemesisfixx

1
được rồi. số thứ hai là "submit"
Hosseini roghayeh

33

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, vì vậy 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()sau setQuery()phương pháp để bỏ tập trung 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();

Không hiển thị kể từ khi viết searchView.setIconified (false); chỉ .
lolo_house

7

Nếu bạn muốn pre-fil của bạn SearchViewvới một số văn bản searchView.setQuery(text, false)sẽ không hoạt động ngoài hộp. lý do là khi SearchViewđược mở rộng

searchView.onActionViewExpanded()

nhận cuộc gọi mà các cuộc gọi searchView.setText("")và xóa bất kỳ văn bản nào chúng tôi đã đặt.

Giải pháp là đặt Trình nghe mở rộng và đặt văn bản pre-fil khi văn bản 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
}

6

Đâ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
giải pháp tiết kiệm cuộc sống đơn giản, nhanh chóng!
eren130

0

Nếu bạn muốn searchView mở rộng và nó có thể được thu nhỏ trở lại biểu tượng sau khi người dùng nhấn vào x (đóng), cách là:

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.

LƯU Ý: Nếu bạn mở rộng nó bằng cách sử dụng:

searchView.onActionViewExpanded()

searchView sẽ không thu hẹp trở lại sau khi người dùng nhấn vào x (đóng)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.