ช่องข้อความทุกช่องต้องมีอินพุตข้อความบางประเภท เช่น อีเมล หมายเลขโทรศัพท์ หรือ ข้อความธรรมดา คุณต้องระบุประเภทอินพุตสําหรับช่องข้อความแต่ละช่องในแอปเพื่อให้ระบบแสดง วิธีการป้อนข้อมูลแบบนุ่มนวลที่เหมาะสม เช่น แป้นพิมพ์บนหน้าจอ
นอกเหนือจากประเภทของปุ่มที่ใช้ได้กับวิธีการป้อนข้อมูลแล้ว คุณสามารถระบุการทำงานต่างๆ เช่น วิธีการป้อนข้อมูลมีคำแนะนำการสะกดคำ ใช้ตัวพิมพ์ใหญ่สำหรับประโยคใหม่ และแทนที่ ปุ่มขึ้นบรรทัดใหม่ที่มีปุ่มดำเนินการ เช่น เสร็จสิ้นหรือถัดไป หน้านี้แสดงวิธีการ เพื่อระบุลักษณะเฉพาะเหล่านี้
ระบุประเภทแป้นพิมพ์
ประกาศวิธีการป้อนข้อมูลสำหรับช่องข้อความทุกครั้งด้วยการเพิ่มเมธอด
android:inputType
ให้กับแอตทริบิวต์
องค์ประกอบ <EditText>
เช่น ถ้าต้องการวิธีการป้อนข้อมูลสำหรับป้อนหมายเลขโทรศัพท์ ให้ใช้
ค่า "phone"
:
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/phone_hint" android:inputType="phone" />
หากช่องข้อความสำหรับรหัสผ่าน ให้ใช้ค่า "textPassword"
เพื่อให้ช่องข้อความ
ปกปิดข้อมูลที่ผู้ใช้ป้อน
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
มีค่าที่เป็นไปได้หลายค่าที่บันทึกไว้กับแอตทริบิวต์ android:inputType
และคุณสามารถรวมค่าบางค่าเพื่อระบุลักษณะวิธีการป้อนข้อมูลและ
พฤติกรรมของคุณ
เปิดใช้คำแนะนำการสะกดคำและลักษณะการทำงานอื่นๆ
แอตทริบิวต์ android:inputType
ให้คุณระบุพฤติกรรมต่างๆ สำหรับอินพุต
สิ่งสำคัญที่สุดคือ หากช่องข้อความมีไว้เพื่อป้อนข้อความพื้นฐาน เช่น
ข้อความ - เปิดใช้การแก้ไขการสะกดอัตโนมัติด้วย "textAutoCorrect"
คุณสามารถรวมลักษณะการทำงานที่แตกต่างกันและรูปแบบวิธีการป้อนข้อมูลเข้ากับ
android:inputType
เช่น ดูวิธีสร้างช่องข้อความ
ทำให้คำแรกของประโยคเป็นตัวพิมพ์ใหญ่ และยังแก้ไขคำสะกดผิดโดยอัตโนมัติด้วย
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
ระบุการทำงานของวิธีการป้อนข้อมูล
วิธีการป้อนข้อมูลแบบนุ่มนวลส่วนใหญ่จะมีปุ่มการดำเนินการของผู้ใช้อยู่ที่มุมด้านล่างซึ่งเหมาะสมสำหรับ
ช่องข้อความปัจจุบัน โดยค่าเริ่มต้น ระบบจะใช้ปุ่มนี้สำหรับฟิลด์ถัดไป หรือ
การดำเนินการเสร็จสิ้น เว้นแต่ช่องข้อความจะรองรับข้อความหลายบรรทัด เช่น
android:inputType="textMultiLine"
ซึ่งในกรณีนี้ปุ่มการทำงานจะเป็นปุ่มขึ้นบรรทัดใหม่
ผลตอบแทน แต่คุณสามารถระบุการทำงานอื่นๆ ที่อาจเหมาะสมกับช่องข้อความของคุณมากกว่า
เช่น ส่งหรือไป
หากต้องการระบุปุ่มการทำงานของแป้นพิมพ์ ให้ใช้
android:imeOptions
ที่มีค่าการกระทำ เช่น "actionSend"
หรือ "actionSearch"
สำหรับ
ตัวอย่าง:
<EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_hint" android:inputType="text" android:imeOptions="actionSend" />
จากนั้น คุณสามารถฟังการกดปุ่มดำเนินการได้โดยกำหนด
TextView.OnEditorActionListener
สำหรับองค์ประกอบ EditText
ใน
Listener ให้ตอบกลับไปที่รหัสการดำเนินการ IME ที่เหมาะสมซึ่งระบุไว้ใน
EditorInfo
ชั้นเรียน
เช่น
IME_ACTION_SEND
,
ดังที่ปรากฏในตัวอย่างต่อไปนี้
Kotlin
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return@setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }
Java
EditText editText = (EditText) findViewById(R.id.search); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_SEND) { sendMessage(); handled = true; } return handled; } });
ให้คำแนะนำที่เติมข้อความอัตโนมัติ
หากต้องการให้คำแนะนำแก่ผู้ใช้ขณะที่พิมพ์ ให้ใช้คลาสย่อยของ
โทรหา EditText
แล้ว
AutoCompleteTextView
ในการใช้การเติมข้อความอัตโนมัติ คุณต้องระบุ
Adapter
ที่มีข้อความ
แนะนำ อะแดปเตอร์มีอยู่หลายแบบ ขึ้นอยู่กับว่าข้อมูลมาจากไหน เช่น
จากฐานข้อมูลหรืออาร์เรย์
ขั้นตอนต่อไปนี้จะอธิบายวิธีตั้งค่า AutoCompleteTextView
ให้คำแนะนำจากอาร์เรย์โดยใช้
ArrayAdapter
:
- เพิ่ม
AutoCompleteTextView
ลงในเลย์เอาต์ นี่คือเลย์เอาต์ที่มีเฉพาะข้อความ ฟิลด์:<?xml version="1.0" encoding="utf-8"?> <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" />
- กำหนดอาร์เรย์ที่มีคำแนะนำข้อความทั้งหมด ตัวอย่างเช่น นี่คือ
อาร์เรย์ของชื่อประเทศ:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> ... </string-array> </resources>
- ใน
Activity
หรือFragment
โปรดใช้โค้ดต่อไปนี้เพื่อ ระบุอะแดปเตอร์ที่ให้ข้อเสนอแนะ:Kotlin
// Get a reference to the AutoCompleteTextView in the layout. val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView // Get the string array. val countries: Array<out String> = resources.getStringArray(R.array.countries_array) // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter -> textView.setAdapter(adapter) }
Java
// Get a reference to the AutoCompleteTextView in the layout. AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); // Get the string array. String[] countries = getResources().getStringArray(R.array.countries_array); // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries); textView.setAdapter(adapter);
ในตัวอย่างก่อนหน้านี้
ArrayAdapter
ใหม่จะเริ่มต้นเพื่อเชื่อมโยงแต่ละรายการใน อาร์เรย์สตริงcountries_array
เป็นTextView
ที่มีอยู่ในsimple_list_item_1
เค้าโครงนี้มาจาก Android ซึ่งให้ ลักษณะมาตรฐานสำหรับข้อความในรายการ -
กำหนดอะแดปเตอร์ให้กับ
AutoCompleteTextView
ด้วยการโทรsetAdapter()