imeOptions“ actionNext” โดยทางโปรแกรม - จะข้ามไปยังฟิลด์ถัดไปได้อย่างไร


92

ในรูปแบบ XML เป็นไปได้ที่จะระบุว่าandroid:imeOptions="actionNext"จะเพิ่มNextปุ่มใดในแป้นพิมพ์เสมือนจริงและโดยการคลิกที่ปุ่มนั้น - โฟกัสจะข้ามไปยังฟิลด์ถัดไป

จะทำอย่างไรโดยใช้โปรแกรม - เช่นตามจุดโฟกัสของทริกเกอร์เหตุการณ์บางอย่างเพื่อไปยังฟิลด์ถัดไป

คำตอบ:


192

คุณสามารถใช้ค่าคงที่จากคลาส EditorInfo สำหรับอ็อพชัน IME ชอบ,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

ใช่มิฉะนั้นมันจะแทรกบรรทัดใหม่และข้ามไปที่ =)
Ilker Baltaci

2
คำถามนี้ตอบคำถามของ OP อย่างไร? ซึ่งจะไม่ข้ามไปยังฟิลด์ถัดไปโดยอัตโนมัติ
hitmaneidos

27

requestFocus()ค้นหาข้อมูลที่สามารถโฟกัสต่อไปและกว่าวิงวอน

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();

2
นี่ไม่ใช่คำตอบที่แท้จริงโดยอ้างอิงถึงชื่อของคำถามนี้ แต่เป็นคำตอบที่ถูกต้องในทางเทคนิค คำตอบด้านล่างนี้เหมาะสมกว่า
Sean Glover

4
@SeanGlover คุณไม่ควรใช้คำด้านล่างนี้เพราะตำแหน่งของคำตอบเปลี่ยนแปลงไปเรื่อย ๆ
Nike15

20

เพียงข้อเสนอแนะหากคุณใช้

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

ไม่ได้ผลตรวจสอบให้แน่ใจว่า EditText ของคุณใช้บรรทัดเดียว

เช่น:

       editTextSample.setSingleLine();

1
ขอบคุณ. นี่ควรเป็นคำตอบที่ยอมรับได้ เพียงโทร setSingleLine () ก่อน setImeOptions
Herman

8

มีความจำเป็นเสมอในการเพิ่มคีย์พิเศษนอกเหนือจากคีย์เริ่มต้นที่มีอยู่ในQWERTYแป้นพิมพ์เสมือน

ใช้ XML

<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>

By Programmatic Way

EditorInfoเป็นชั้นที่มีประโยชน์มากที่สุดเมื่อคุณต้องจัดการกับประเภทของผู้ใช้ป้อนข้อมูลใด ๆ ในการประยุกต์ใช้ Android ของคุณ

IME_ACTION_DONE: การดำเนินการนี้เป็นการดำเนินการ "เสร็จสิ้น" โดยไม่มีการป้อนข้อมูลและ IME จะถูกปิด

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

สำหรับข้อมูลเพิ่มเติมคุณสามารถไปที่http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html



0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

ฉันแก้ปัญหาให้แน่ใจด้วยบรรทัดเดียวและไปที่ editText ถัดไปเมื่อคลิก Enter


0

ในกรณีของฉันตั้งค่า imeOptions เพื่อแก้ไขปัญหา

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT

0

คุณสามารถทำได้โดย

edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button

หรือ

edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button

แต่ ... คุณต้องเข้าใจว่าหากคุณใช้ตัวกรองสำหรับแก้ไขข้อความคุณต้องตั้งค่า

edittext.setSingleLine()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.