指定输入法类型

试用 Compose 方式
Jetpack Compose 是推荐在 Android 设备上使用的界面工具包。了解如何在 Compose 中使用触控和输入功能。
<ph type="x-smartling-placeholder"></ph> 文本键盘选项 →

每个文本字段都需要特定类型的文本输入,例如电子邮件地址、电话号码或 纯文本。您必须为应用中的每个文本字段指定输入类型,以便系统显示 相应的软键盘输入法,例如屏幕键盘。

除了输入法提供的按钮类型之外,您还可以指定一些行为,例如 输入法是否提供拼写建议、是否将新句子的首字母大写,以及是否将 带有操作按钮(例如 DoneNext)的回车按钮。本页介绍了 以指定这些特征

指定键盘类型

请务必通过向文本字段添加 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" />
textPassword 输入类型
图 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"
    ... />

指定输入法操作

大多数软键盘输入法都会在底部角落提供一个适用于 当前文本字段。默认情况下,系统会将此按钮用于 Next完成操作,除非文本字段支持多行文本(例如 android:inputType="textMultiLine" - 在这种情况下,操作按钮是一辆车 return。不过,您可以指定其他可能更适合您的文本字段的操作, (例如 SendGo)。

要指定键盘操作按钮,请使用 android:imeOptions 属性的值,例如 "actionSend""actionSearch"。例如:

发送按钮
图 4. 声明后,Send 按钮会出现 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 元素的值。在 则响应 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. ActivityFragment,请使用以下代码 指定提供建议的适配器:

    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()