เครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) คือตัวควบคุมของผู้ใช้ที่ให้ผู้ใช้ป้อนข้อความได้ Android มอบ เฟรมเวิร์กวิธีการป้อนข้อมูลที่ขยายได้ ซึ่งช่วยให้แอปพลิเคชันสามารถมอบวิธีการป้อนข้อมูลอื่นๆ ให้แก่ผู้ใช้ เช่น แป้นพิมพ์บนหน้าจอหรือการป้อนข้อมูลด้วยเสียงพูด หลังจากติดตั้ง IME แล้ว ผู้ใช้สามารถเลือกจาก การตั้งค่าระบบและนำไปใช้ทั่วทั้งระบบ เปิดใช้ IME ได้ครั้งละ 1 รายการเท่านั้น
ในการเพิ่ม IME ลงในระบบ Android ให้สร้างแอปพลิเคชัน Android ที่มีคลาส
ขยาย
InputMethodService
นอกจากนี้ คุณมักจะสร้าง "การตั้งค่า" ที่ส่งตัวเลือกไปยังบริการ IME คุณ
และยังสามารถกำหนด UI การตั้งค่าที่แสดงเป็นส่วนหนึ่งของการตั้งค่าระบบได้ด้วย
หน้านี้จะกล่าวถึงหัวข้อต่อไปนี้
- วงจรการใช้งาน IME
- การประกาศคอมโพเนนต์ IME ในไฟล์ Manifest ของแอปพลิเคชัน
- IME API
- การออกแบบ UI ของ IME
- การส่งข้อความจาก IME ไปยังแอปพลิเคชัน
- การทำงานกับ IME ประเภทย่อย
- ข้อควรพิจารณาอื่นๆ เกี่ยวกับ IME
หากคุณยังไม่ได้ใช้ IME โปรดอ่านบทความแนะนำ วิธีการป้อนข้อมูลบนหน้าจอ ก่อน
วงจรชีวิตของ IME
แผนภาพต่อไปนี้อธิบายวงจรของ IME
![รูปภาพแสดงวงจรชีวิตของ IME](https://developer.android.com/static/resources/articles/images/inputmethod_lifecycle_image.png?authuser=0000&hl=th)
ส่วนต่อไปนี้จะอธิบายวิธีใช้ UI และโค้ดที่เชื่อมโยงกับ IME จะเดินตามวงจรนี้
ประกาศคอมโพเนนต์ IME ในไฟล์ Manifest
ในระบบ Android IME คือแอปพลิเคชัน Android ที่มีบริการ IME พิเศษ
ไฟล์ Manifest ของแอปพลิเคชันต้องประกาศบริการ ขอสิทธิ์ที่จำเป็น
ตัวกรอง Intent ที่ตรงกับการดำเนินการ action.view.InputMethod
และระบุข้อมูลเมตา
ที่กำหนดลักษณะของ IME นอกจากนี้ เพื่อแสดงอินเทอร์เฟซการตั้งค่าที่ช่วยให้
ปรับเปลี่ยนลักษณะการทำงานของ IME คุณสามารถกำหนด "การตั้งค่า" กิจกรรมที่เปิดจาก
การตั้งค่าระบบ
ข้อมูลโค้ดต่อไปนี้แจ้งบริการ IME ขอสิทธิ์
BIND_INPUT_METHOD
เพื่อให้บริการเชื่อมต่อ IME กับระบบ ให้ตั้งค่าตัวกรอง Intent ที่ตรงกับการดำเนินการ
android.view.InputMethod
และกำหนดข้อมูลเมตาสำหรับ IME ดังนี้
<!-- Declares the input method service. --> <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service>
ข้อมูลโค้ดถัดไปจะประกาศกิจกรรมการตั้งค่าสำหรับ IME แต่มีตัวกรอง Intent
ACTION_MAIN
ที่
ระบุว่ากิจกรรมนี้เป็นจุดแรกเข้าหลักสำหรับแอปพลิเคชัน IME ดังนี้
<!-- Optional: an activity for controlling the IME settings. --> <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity>
นอกจากนี้คุณยังให้สิทธิ์เข้าถึงการตั้งค่าของ IME ได้โดยตรงจาก UI ของ IME
API วิธีการป้อนข้อมูล
คลาสเฉพาะสำหรับ IME จะอยู่ใน
android.inputmethodservice
และ
วันที่ android.view.inputmethod
แพ็กเกจของคุณ ชั้นเรียน KeyEvent
คือ
สำคัญในการจัดการอักขระบนแป้นพิมพ์
ส่วนสำคัญของ IME คือองค์ประกอบบริการ ซึ่งเป็นคลาสที่ขยาย
InputMethodService
นอกเหนือจากการใช้วงจรบริการปกติแล้ว
มี Callback สำหรับให้ UI ของ IME, การจัดการอินพุตของผู้ใช้ และการส่งข้อความไปยัง
ที่มีโฟกัสอยู่ โดยค่าเริ่มต้น คลาส InputMethodService
จะมีองค์ประกอบ
เพื่อการจัดการสถานะและการมองเห็น IME และการสื่อสารกับ IME
ฟิลด์ป้อนข้อมูล
ชั้นเรียนต่อไปนี้ก็มีความสำคัญเช่นกัน
BaseInputConnection
-
กำหนดช่องทางการสื่อสารจาก
วันที่
InputMethod
กลับไปยังแอปพลิเคชันที่ได้รับอินพุต คุณใช้หน้านี้เพื่ออ่านข้อความรอบๆ เคอร์เซอร์ คอมมิตข้อความลงในกล่องข้อความ และส่งเหตุการณ์สำคัญที่เป็นข้อมูลดิบไปยังแอปพลิเคชัน แอปพลิเคชันต้องขยายคลาสนี้แทนที่จะใช้อินเทอร์เฟซพื้นฐานInputConnection
KeyboardView
-
ส่วนขยายของ
View
ที่ แสดงผลแป้นพิมพ์และตอบสนองต่อเหตุการณ์การป้อนข้อมูลของผู้ใช้ รูปแบบแป้นพิมพ์จะกำหนดโดย อินสแตนซ์ของKeyboard
, ที่คุณกำหนดในไฟล์ XML ได้
ออกแบบ UI วิธีการป้อนข้อมูล
มีองค์ประกอบภาพหลัก 2 ส่วนสำหรับ IME ได้แก่ มุมมองอินพุตและ ตัวเลือก คุณต้องติดตั้งเฉพาะองค์ประกอบที่เกี่ยวข้องกับ วิธีการป้อนข้อมูลที่คุณออกแบบ
มุมมองอินพุต
มุมมองการป้อนข้อมูลคือ UI ที่ผู้ใช้ป้อนข้อความในรูปแบบของการคลิกปุ่ม การเขียนด้วยลายมือ หรือ
เมื่อ IME ปรากฏเป็นครั้งแรก ระบบจะเรียกใช้หมายเลข
onCreateInputView()
Callback ในการใช้งานวิธีการนี้ ให้สร้างเลย์เอาต์ที่คุณต้องการแสดงใน IME
หน้าต่างและส่งกลับเลย์เอาต์ไปยังระบบ ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างของการใช้
เมธอด onCreateInputView()
:
Kotlin
override fun onCreateInputView(): View { return layoutInflater.inflate(R.layout.input, null).apply { if (this is MyKeyboardView) { setOnKeyboardActionListener(this@MyInputMethod) keyboard = latinKeyboard } } }
Java
@Override public View onCreateInputView() { MyKeyboardView inputView = (MyKeyboardView) getLayoutInflater().inflate(R.layout.input, null); inputView.setOnKeyboardActionListener(this); inputView.setKeyboard(latinKeyboard); return inputView; }
ในตัวอย่างนี้ MyKeyboardView
เป็นตัวอย่างการติดตั้งใช้งานที่กำหนดเองของ
KeyboardView
ที่แสดงผล Keyboard
มุมมองผู้สมัคร
มุมมองตัวเลือกเป็น UI ที่ IME จะแสดงการแก้ไขคำที่อาจเป็นไปได้หรือคำแนะนำ
เพื่อให้ผู้ใช้เลือก ในวงจรของ IME ระบบจะเรียกใช้
onCreateCandidatesView()
เมื่อพร้อมที่จะแสดงมุมมองตัวเลือก ในการใช้งานเมธอดนี้ ให้แสดงผล
แสดงการแนะนำคำ หรือแสดงผลค่า Null หากคุณไม่ต้องการแสดงอะไรเลย ค่าว่าง
การตอบกลับเป็นลักษณะการทำงานเริ่มต้น ดังนั้นคุณไม่ต้องดำเนินการใดๆ ถ้าไม่ได้ระบุ
แนะนำ
ข้อควรพิจารณาในการออกแบบ UI
ส่วนนี้จะอธิบายข้อควรพิจารณาบางอย่างในการออกแบบ UI สำหรับ IME
จัดการหน้าจอหลายขนาด
UI สำหรับ IME ต้องปรับขนาดสำหรับหน้าจอขนาดต่างๆ ได้และรองรับทั้ง 2 หน้าจอ และแนวตั้ง ในโหมด IME ที่ไม่ใช่โหมดเต็มหน้าจอ ให้เว้นพื้นที่เพียงพอสำหรับแอปพลิเคชัน แสดงช่องข้อความและบริบทที่เกี่ยวข้อง เพื่อไม่ให้พื้นที่เกินครึ่งหน้าจอ IME กรณีนี้จะไม่เป็นปัญหาในโหมด IME แบบเต็มหน้าจอ
จัดการอินพุตประเภทต่างๆ
ช่องข้อความ Android ให้คุณตั้งค่าประเภทอินพุตเฉพาะ เช่น ข้อความรูปแบบอิสระ, ตัวเลข, URL ที่อยู่อีเมล และสตริงการค้นหา เมื่อคุณใช้ IME ใหม่ ให้ตรวจหาประเภทอินพุตของแต่ละ IME และระบุอินเทอร์เฟซที่เหมาะสม อย่างไรก็ตาม คุณไม่ต้องตั้งค่า IME เพื่อ ตรวจสอบว่าผู้ใช้ป้อนข้อความที่ถูกต้องสำหรับประเภทอินพุตหรือไม่ นี่เป็นความรับผิดชอบของ แอปพลิเคชันที่เป็นเจ้าของช่องข้อความ
ตัวอย่างเช่น นี่คืออินเทอร์เฟซที่ IME ภาษาละตินมีให้สำหรับข้อความแพลตฟอร์ม Android อินพุต:
![รูปภาพแสดงการป้อนข้อความใน IME ภาษาละติน](https://developer.android.com/static/images/ui/text_input.png?authuser=0000&hl=th)
นี่คืออินเทอร์เฟซที่ IME ภาษาละตินมีให้สำหรับแพลตฟอร์ม Android การป้อนตัวเลข:
![รูปภาพแสดงการป้อนข้อมูลตัวเลขใน IME ภาษาละติน](https://developer.android.com/static/images/ui/numeric_input.png?authuser=0000&hl=th)
เมื่อช่องป้อนข้อมูลได้รับโฟกัสและ IME ของคุณเริ่มทำงาน ระบบจะเรียกใช้
onStartInputView()
,
ใน
ออบเจ็กต์ EditorInfo
รายการ
ที่มีรายละเอียดเกี่ยวกับประเภทอินพุตและแอตทริบิวต์อื่นๆ ของช่องข้อความ ในออบเจ็กต์นี้
เวลา
inputType
จะมีประเภทการป้อนข้อมูลของฟิลด์ข้อความ
ฟิลด์ inputType
คือ int
ที่มีรูปแบบบิตสำหรับ
การตั้งค่าประเภทอินพุต ในการทดสอบประเภทอินพุตของฟิลด์ข้อความ ให้มาสก์ด้วยค่าคงที่
TYPE_MASK_CLASS
,
ดังนี้
Kotlin
inputType and InputType.TYPE_MASK_CLASS
Java
inputType & InputType.TYPE_MASK_CLASS
รูปแบบบิตของประเภทอินพุตมีได้หลายค่า ดังนี้
TYPE_CLASS_NUMBER
- ช่องข้อความสำหรับป้อนตัวเลข ตามที่แสดงในรูปที่ 3 IME สำหรับภาษาละตินแสดง แป้นตัวเลขสำหรับช่องประเภทนี้
TYPE_CLASS_DATETIME
- ช่องข้อความสำหรับป้อนวันที่และเวลา
TYPE_CLASS_PHONE
- ช่องข้อความสำหรับป้อนหมายเลขโทรศัพท์
TYPE_CLASS_TEXT
- ช่องข้อความสำหรับป้อนอักขระที่รองรับ
ค่าคงที่เหล่านี้มีการอธิบายไว้อย่างละเอียดในเอกสารประกอบอ้างอิงสำหรับ
InputType
ฟิลด์ inputType
อาจมีบิตอื่นๆ ที่ระบุตัวแปรของช่องข้อความ
เช่น
TYPE_TEXT_VARIATION_PASSWORD
- รูปแบบหนึ่งของ
TYPE_CLASS_TEXT
สำหรับป้อนรหัสผ่าน วิธีการป้อนข้อมูลจะปรากฏขึ้น Dingbats แทนข้อความจริง TYPE_TEXT_VARIATION_URI
- รูปแบบหนึ่งของ
TYPE_CLASS_TEXT
สำหรับป้อน URL ของเว็บและ Uniform Resource อื่นๆ ตัวระบุ (URL) TYPE_TEXT_FLAG_AUTO_COMPLETE
- รูปแบบหนึ่งของ
TYPE_CLASS_TEXT
สำหรับการป้อนข้อความที่แอปพลิเคชัน ป้อนอัตโนมัติจากพจนานุกรม การค้นหา หรือสิ่งอำนวยความสะดวกอื่นๆ
มาสก์ inputType
ด้วยค่าคงที่ที่เหมาะสมเมื่อคุณทดสอบตัวแปรเหล่านี้
ค่าคงที่ของมาสก์ที่มีระบุไว้ในเอกสารอ้างอิงสำหรับ InputType
ส่งข้อความไปยังแอปพลิเคชัน
ขณะที่ผู้ใช้ป้อนข้อความด้วย IME คุณสามารถส่งข้อความไปยังแอปพลิเคชันได้โดยส่ง
เหตุการณ์สำคัญ หรือการแก้ไขข้อความรอบๆ เคอร์เซอร์ในฟิลด์ข้อความของแอปพลิเคชัน ไม่ว่าในกรณีใด
ใช้อินสแตนซ์ของ InputConnection
เพื่อส่งข้อความ ในการรับอินสแตนซ์นี้ ให้เรียกใช้
InputMethodService.getCurrentInputConnection()
แก้ไขข้อความที่อยู่รอบเคอร์เซอร์
เมื่อจัดการกับการแก้ไขข้อความ วิธีการที่มีประโยชน์บางอย่างใน
BaseInputConnection
คือรายการต่อไปนี้
-
getTextBeforeCursor()
- ส่งคืน
CharSequence
ซึ่งมีจำนวนอักขระที่ขอก่อนตำแหน่งเคอร์เซอร์ปัจจุบัน -
getTextAfterCursor()
- แสดงผล
CharSequence
ที่มีจำนวนอักขระที่ขอตามหลัง ตำแหน่งเคอร์เซอร์ปัจจุบัน -
deleteSurroundingText()
- ลบจำนวนอักขระที่ระบุก่อนและตามหลังตำแหน่งเคอร์เซอร์ปัจจุบัน
-
commitText()
- กำหนด
CharSequence
ลงในช่องข้อความและกำหนดตำแหน่งเคอร์เซอร์ใหม่
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้แสดงวิธีแทนที่อักขระ 4 ตัวทางด้านซ้ายของแท็ก เคอร์เซอร์ที่มีข้อความ "สวัสดี":
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.deleteSurroundingText(4, 0) ic.commitText("Hello", 1) ic.commitText("!", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.deleteSurroundingText(4, 0); ic.commitText("Hello", 1); ic.commitText("!", 1);
รองรับการเขียนข้อความก่อนดำเนินการ
หาก IME ของคุณคาดคะเนข้อความหรือต้องใช้หลายขั้นตอนในการเขียนรูปอักขระหรือคำ คุณสามารถแสดง
ในฟิลด์ข้อความจนกว่าผู้ใช้จะป้อนคำ จากนั้นคุณจะแทนที่ส่วน
การเรียบเรียงนั้นด้วยข้อความที่เสร็จแล้ว คุณสามารถกำหนดค่าพิเศษให้กับข้อความได้โดยการเพิ่ม
span เมื่อคุณส่งต่อ
setComposingText()
ข้อมูลโค้ดต่อไปนี้แสดงวิธีแสดงความคืบหน้าในช่องข้อความ
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.setComposingText("Composi", 1) ic.setComposingText("Composin", 1) ic.commitText("Composing ", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.setComposingText("Composi", 1); ic.setComposingText("Composin", 1); ic.commitText("Composing ", 1);
สกัดกั้นเหตุการณ์สำคัญของฮาร์ดแวร์
แม้ว่าหน้าต่างวิธีการป้อนข้อมูลจะไม่มีการโฟกัสที่ชัดเจน แต่ก็ได้รับเหตุการณ์สำคัญของฮาร์ดแวร์ ก่อน แล้วจึงนำไปใช้หรือส่งต่อไปยังแอปพลิเคชันได้ ตัวอย่างเช่น คุณอาจต้องการ ใช้ปุ่มบังคับทิศทางเพื่อไปยังภายใน UI เพื่อเลือกคำที่รอพิจารณาในระหว่างการเขียนข้อความ คุณอาจต้องกดคีย์ย้อนกลับเพื่อปิดกล่องโต้ตอบที่มาจากวิธีการป้อนข้อมูลด้วย
หากต้องการสกัดกั้นคีย์ฮาร์ดแวร์ ให้ลบล้าง
onKeyDown()
และ
onKeyUp()
เรียกใช้เมธอด super()
สำหรับคีย์ที่คุณไม่ต้องการจัดการด้วยตนเอง
สร้างประเภทย่อย IME
ประเภทย่อยช่วยให้ IME แสดงโหมดป้อนข้อมูลหลายภาษาและภาษาที่ IME รองรับ ประเภทย่อยอาจ มีความหมายดังต่อไปนี้
- ภาษา เช่น en_US หรือ fr_FR
- โหมดป้อนข้อมูล เช่น เสียง แป้นพิมพ์ หรือการเขียนด้วยลายมือ
- รูปแบบการป้อนข้อมูล ฟอร์ม หรือคุณสมบัติอื่นๆ เฉพาะสำหรับ IME เช่น 10 คีย์หรือ QWERTY รูปแบบแป้นพิมพ์
โหมดอาจเป็นข้อความใดก็ได้ เช่น "แป้นพิมพ์" หรือ "เสียง" ประเภทย่อยยังสามารถแสดงชุดค่าผสม จากทั้งหมดนี้
ข้อมูลประเภทย่อยจะใช้สำหรับกล่องโต้ตอบตัวสลับ IME ที่พร้อมใช้งานจากแถบการแจ้งเตือน และสำหรับการตั้งค่า IME ข้อมูลนี้จะช่วยให้เฟรมเวิร์กแสดงประเภทย่อยที่เฉพาะเจาะจงของ IME ได้ โดยตรง เมื่อสร้าง IME ให้ใช้บริการประเภทย่อย เนื่องจากจะช่วยให้ผู้ใช้ระบุ สลับระหว่างภาษาและโหมดของ IME ต่างๆ
กำหนดประเภทย่อยในไฟล์ทรัพยากร XML ของวิธีการป้อนข้อมูลไฟล์ใดไฟล์หนึ่งโดยใช้องค์ประกอบ
องค์ประกอบ <subtype>
ข้อมูลโค้ดต่อไปนี้กำหนด IME ที่มี 2 ประเภทย่อย ได้แก่
ประเภทย่อยของแป้นพิมพ์สำหรับภาษาอังกฤษ (สหรัฐอเมริกา) และประเภทย่อยของแป้นพิมพ์สำหรับภาษาฝรั่งเศส
สถานที่ของฝรั่งเศส:
<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon"> <subtype android:name="@string/display_name_english_keyboard_ime" android:icon="@drawable/subtype_icon_english_keyboard_ime" android:languageTag="en-US" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="somePrivateOption=true" /> <subtype android:name="@string/display_name_french_keyboard_ime" android:icon="@drawable/subtype_icon_french_keyboard_ime" android:languageTag="fr-FR" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="someVariable=30,someInternalOption=false" /> <subtype android:name="@string/display_name_german_keyboard_ime" ... /> </input-method>
เพื่อให้แน่ใจว่าประเภทย่อยของคุณมีป้ายกำกับอย่างถูกต้องใน UI ให้ใช้ "%s" เพื่อรับป้ายกำกับประเภทย่อยที่ จะเหมือนกับป้ายกำกับภาษาของประเภทย่อย ซึ่งจะแสดงในข้อมูลโค้ด 2 รายการถัดไป ข้อมูลโค้ดแรกจะแสดงส่วนหนึ่งของไฟล์ XML ของวิธีการป้อนข้อมูล ดังนี้
<subtype android:label="@string/label_subtype_generic" android:imeSubtypeLocale="en_US" android:icon="@drawable/icon_en_us" android:imeSubtypeMode="keyboard" />
ข้อมูลโค้ดถัดไปเป็นส่วนหนึ่งของไฟล์ strings.xml
ของ IME ทรัพยากรสตริง
label_subtype_generic
ซึ่งใช้โดยคำจำกัดความ UI วิธีการป้อนข้อมูลเพื่อตั้งค่า
ป้ายกำกับของประเภทย่อยมีการกำหนดดังต่อไปนี้
<string name="label_subtype_generic">%s</string>
การตั้งค่านี้ทำให้ชื่อที่แสดงของประเภทย่อยตรงกับการตั้งค่าภาษา ตัวอย่างเช่น ใน เป็นภาษาอังกฤษ ชื่อที่แสดงคือ "English (สหรัฐอเมริกา)"
เลือกประเภทย่อยของ IME จากแถบการแจ้งเตือน
ระบบ Android จัดการประเภทย่อยทั้งหมดที่ IME ทั้งหมดเปิดเผย ประเภทย่อย IME จะถือว่าเป็นโหมด IME ที่ผู้ใช้เหล่านั้นอยู่ ผู้ใช้สามารถนำทางจากแถบการแจ้งเตือนหรือแอปการตั้งค่าไปยัง เมนูย่อยของ IME ที่สามารถใช้ได้ ดังที่แสดงในรูปต่อไปนี้
![รูปภาพแสดงภาษาและ ป้อน เมนูระบบ](https://developer.android.com/static/images/ui/languages_and_input.png?authuser=0000&hl=th)
เลือกประเภทย่อย IME จากการตั้งค่าระบบ
นอกจากนี้ ผู้ใช้ยังควบคุมวิธีใช้ประเภทย่อยได้ในภาษาและ แผงการตั้งค่าอินพุต ในการตั้งค่าระบบ
![รูปภาพแสดงเมนูการเลือกภาษา](https://developer.android.com/static/images/ui/languages.png?authuser=0000&hl=th)
สลับระหว่างประเภทย่อย IME
คุณสามารถให้ผู้ใช้สลับระหว่างประเภทย่อย IME ได้ง่ายๆ โดยการระบุคีย์สลับ เช่น ไอคอนภาษารูปลูกโลกบนแป้นพิมพ์ การดำเนินการนี้จะช่วยปรับปรุงความสามารถในการใช้งานของแป้นพิมพ์และสะดวก สำหรับผู้ใช้ หากต้องการเปิดใช้การเปลี่ยนนี้ ให้ทำตามขั้นตอนต่อไปนี้
- ประกาศ
supportsSwitchingToNextInputMethod = "true"
ใน XML ของวิธีการป้อนข้อมูล ไฟล์ทรัพยากร การประกาศของคุณต้องมีลักษณะคล้ายกับข้อมูลโค้ดต่อไปนี้<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon" android:supportsSwitchingToNextInputMethod="true">
- เรียกใช้
shouldOfferSwitchingToNextInputMethod()
- หากเมธอดแสดงผลเป็น "จริง" ให้แสดงคีย์การสลับ
- เมื่อผู้ใช้แตะแป้นสลับ ให้เรียกใช้
switchToNextInputMethod()
, การส่งค่าเท็จ ค่าเท็จจะบอกระบบให้ดำเนินการกับประเภทย่อยทั้งหมดอย่างเท่าเทียมกัน โดยไม่คำนึงถึงค่า หมายเลข IME ของอุปกรณ์ การระบุ "จริง" ต้องการให้ระบบหมุนเวียนผ่านประเภทย่อยใน IME ปัจจุบัน
ข้อควรพิจารณาทั่วไปเกี่ยวกับ IME
ต่อไปนี้คือสิ่งอื่นๆ ที่ควรพิจารณาเมื่อคุณใช้ IME
- ให้ผู้ใช้ตั้งค่าตัวเลือกได้โดยตรงจาก UI ของ IME
- มอบวิธีให้ผู้ใช้เปลี่ยนไปใช้ IME อื่นได้โดยตรงจาก UI วิธีการป้อนข้อมูล เพราะอาจมีการติดตั้ง IME หลายรายการในอุปกรณ์
- เปิด UI ของ IME อย่างรวดเร็ว โหลดทรัพยากรขนาดใหญ่ไว้ล่วงหน้าหรือโหลดตามคำขอ เพื่อให้ผู้ใช้ คุณจะเห็น IME ทันทีที่แตะช่องข้อความ แคชทรัพยากรและมุมมองสำหรับรายการที่ต่อเนื่อง การเรียกวิธีการป้อนข้อมูล
- ปล่อยการจัดสรรหน่วยความจำขนาดใหญ่ทันทีหลังจากที่ซ่อนหน้าต่างวิธีการป้อนข้อมูล ที่แอปพลิเคชันมีหน่วยความจำเพียงพอต่อการเรียกใช้ ใช้ข้อความที่ล่าช้าเพื่อปล่อยทรัพยากร หาก IME ซ่อนอยู่ 2-3 วินาที
- ตรวจสอบว่าผู้ใช้สามารถป้อนอักขระสำหรับภาษาหรือประเทศได้มากที่สุด ที่เชื่อมโยงกับ IME ผู้ใช้อาจใช้เครื่องหมายวรรคตอนในรหัสผ่านหรือชื่อผู้ใช้ ดังนั้น IME ของคุณ ต้องกำหนดอักขระที่แตกต่างกัน เพื่อให้ผู้ใช้ป้อนรหัสผ่านและเข้าถึง อุปกรณ์