ระบุประเภทวิธีการป้อนข้อมูล

ลองใช้วิธีการเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีใช้การแตะและการป้อนข้อมูลในการเขียน

ช่องข้อความทุกช่องต้องมีอินพุตข้อความบางประเภท เช่น อีเมล หมายเลขโทรศัพท์ หรือ ข้อความธรรมดา คุณต้องระบุประเภทอินพุตสําหรับช่องข้อความแต่ละช่องในแอปเพื่อให้ระบบแสดง วิธีการป้อนข้อมูลแบบนุ่มนวลที่เหมาะสม เช่น แป้นพิมพ์บนหน้าจอ

นอกเหนือจากประเภทของปุ่มที่ใช้ได้กับวิธีการป้อนข้อมูลแล้ว คุณสามารถระบุการทำงานต่างๆ เช่น วิธีการป้อนข้อมูลมีคำแนะนำการสะกดคำ ใช้ตัวพิมพ์ใหญ่สำหรับประโยคใหม่ และแทนที่ ปุ่มขึ้นบรรทัดใหม่ที่มีปุ่มดำเนินการ เช่น เสร็จสิ้นหรือถัดไป หน้านี้แสดงวิธีการ เพื่อระบุลักษณะเฉพาะเหล่านี้

ระบุประเภทแป้นพิมพ์

ประกาศวิธีการป้อนข้อมูลสำหรับช่องข้อความทุกครั้งด้วยการเพิ่มเมธอด android:inputType ให้กับแอตทริบิวต์ องค์ประกอบ <EditText>

วันที่ ข้อมูลหมายเลขโทรศัพท์
รูปที่ 1 ประเภทอินพุต phone

เช่น ถ้าต้องการวิธีการป้อนข้อมูลสำหรับป้อนหมายเลขโทรศัพท์ ให้ใช้ ค่า "phone":

<EditText
    android:id="@+id/phone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/phone_hint"
    android:inputType="phone" />
ประเภทอินพุตข้อความรหัสผ่าน
รูปที่ 2 ประเภทอินพุต textPassword

หากช่องข้อความสำหรับรหัสผ่าน ให้ใช้ค่า "textPassword" เพื่อให้ช่องข้อความ ปกปิดข้อมูลที่ผู้ใช้ป้อน

<EditText
    android:id="@+id/password"
    android:hint="@string/password_hint"
    android:inputType="textPassword"
    ... />

มีค่าที่เป็นไปได้หลายค่าที่บันทึกไว้กับแอตทริบิวต์ android:inputType และคุณสามารถรวมค่าบางค่าเพื่อระบุลักษณะวิธีการป้อนข้อมูลและ พฤติกรรมของคุณ

เปิดใช้คำแนะนำการสะกดคำและลักษณะการทำงานอื่นๆ

วันที่ การแก้ไขอัตโนมัติ
รูปที่ 3 การเพิ่ม textAutoCorrect จะเป็นการแก้ไขอัตโนมัติสำหรับ สะกดผิด

แอตทริบิวต์ 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" สำหรับ ตัวอย่าง:

วันที่ ปุ่มส่ง
รูปที่ 4 ปุ่มส่งจะปรากฏขึ้นเมื่อคุณประกาศ android:imeOptions="actionSend"
<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 ที่มีข้อความ แนะนำ อะแดปเตอร์มีอยู่หลายแบบ ขึ้นอยู่กับว่าข้อมูลมาจากไหน เช่น จากฐานข้อมูลหรืออาร์เรย์

วันที่ การแนะนำข้อความ
รูปที่ 5 ตัวอย่าง AutoCompleteTextView ที่มีข้อความ แนะนำ

ขั้นตอนต่อไปนี้จะอธิบายวิธีตั้งค่า AutoCompleteTextView ให้คำแนะนำจากอาร์เรย์โดยใช้ ArrayAdapter:

  1. เพิ่ม 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" />
    
  2. กำหนดอาร์เรย์ที่มีคำแนะนำข้อความทั้งหมด ตัวอย่างเช่น นี่คือ อาร์เรย์ของชื่อประเทศ:
    <?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>
    
  3. ใน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 ซึ่งให้ ลักษณะมาตรฐานสำหรับข้อความในรายการ

  4. กำหนดอะแดปเตอร์ให้กับ AutoCompleteTextView ด้วยการโทร setAdapter()