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ó 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:
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);
true
truy 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?
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();
Nếu bạn muốn pre-fil của bạn SearchView
vớ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
}
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)