โฟกัสมีไว้สำหรับเลือกส่วนประกอบ UI เมื่อคุณใช้บางอย่างนอกเหนือจากการสัมผัส (เช่น d-pad แป้นพิมพ์ ฯลฯ ) ทุกมุมมองสามารถรับโฟกัสได้แม้ว่าค่าเริ่มต้นบางส่วนจะไม่สามารถโฟกัสได้ (คุณสามารถทำให้มุมมองที่ setFocusable(true)
โฟกัสได้โดยใช้และบังคับให้โฟกัสด้วยrequestFocus()
)
แต่ก็เป็นสิ่งสำคัญที่จะทราบว่าเมื่อคุณอยู่ในโหมดสัมผัส, โฟกัสเป็นคนพิการ ดังนั้นหากคุณใช้นิ้วของคุณการเปลี่ยนโฟกัสโดยใช้โปรแกรมจะไม่ทำอะไรเลย ข้อยกเว้นสำหรับมุมมองที่รับอินพุตจากตัวแก้ไขอินพุต EditText
เป็นเช่นตัวอย่าง สำหรับสถานการณ์พิเศษนี้setFocusableInTouchMode(true)
จะใช้เพื่อให้แป้นพิมพ์อ่อนทราบว่าจะส่งอินพุตไปที่ใด EditText
มีการตั้งค่านี้ไปโดยปริยาย แป้นพิมพ์อ่อนจะปรากฏขึ้นโดยอัตโนมัติ
หากคุณไม่ต้องการให้คีย์บอร์ดนุ่ม ๆ โผล่ขึ้นมาโดยอัตโนมัติคุณสามารถหยุดชั่วคราวได้ตามที่ @abeljus ระบุไว้:
InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
เมื่อผู้ใช้คลิกที่EditText
มันควรจะยังคงแสดงแป้นพิมพ์อยู่
อ่านเพิ่มเติม: