มีวิธี setText () สำหรับ SearchView หรืออะไรทำนองนั้นหรือไม่? ฉันพยายามตั้งค่าข้อความค้นหาใน searchView แบบนี้ แต่ไม่มีวิธีการเช่นนี้
searchView.setText(searchToken);
มีวิธี setText () สำหรับ SearchView หรืออะไรทำนองนั้นหรือไม่? ฉันพยายามตั้งค่าข้อความค้นหาใน searchView แบบนี้ แต่ไม่มีวิธีการเช่นนี้
searchView.setText(searchToken);
คำตอบ:
หลังจากสงสัยและลองใช้ฉันพบว่ามีวิธีการใน API ชื่อ setQuery () ซึ่งคุณตั้งค่าข้อความ SearchView และคุณอาจเลือกที่จะส่งการค้นหาหรือไม่ใช้พารามิเตอร์บูลีน
searchView.setQuery(searchToken, false);
true
ให้การสืบค้นดำเนินการเช่นกัน แต่โปรดทราบว่าแม้ว่าการสืบค้นจะดำเนินการได้ดี แต่กล่องข้อความจะยังคงว่างเปล่าจนกว่าจะได้รับโฟกัสด้วยตนเอง ฉันจะแน่ใจได้อย่างไรว่าค่าที่ตั้งอัตโนมัติจะแสดงโดยอัตโนมัติด้วย
คุณสามารถใช้setQuery()
เพื่อเปลี่ยนข้อความในกล่องข้อความ
อย่างไรก็ตามsetQuery()
วิธีการทริกเกอร์สถานะโฟกัสของมุมมองการค้นหาดังนั้นแป้นพิมพ์จะแสดงบนหน้าจอหลังจากเรียกใช้วิธีนี้แล้ว
เพื่อแก้ไขปัญหานี้เพียงโทรsearchView.clearFocus()
หลังจากที่setQuery()
วิธีการในการ unfocus มันและแป้นพิมพ์จะไม่แสดงบนหน้าจอ
ตัวอย่าง:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
นี่คือสิ่งที่ได้ผลสำหรับฉัน
MenuItem sItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) sItem.getActionView();
sItem.expandActionView();
searchView.setQuery("your text", false);
หากคุณต้องการกรอกSearchView
ข้อความล่วงหน้าของคุณด้วยข้อความบางส่วนsearchView.setQuery(text, false)
จะไม่สามารถใช้งานได้นอกกรอบ เหตุผลก็คือเมื่อSearchView
ได้รับการขยาย
searchView.onActionViewExpanded()
รับสายที่โทรsearchView.setText("")
และล้างข้อความที่เราตั้งไว้
วิธีแก้ไขคือการตั้งค่า Expand listener และตั้งค่า pre-fil text เมื่อ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 ขยายและสามารถย่อขนาดกลับไปที่ไอคอนหลังจากที่ผู้ใช้แตะ 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 (ปิด)