Xamarin.Android 编辑文本

在本部分,你将使用 EditText 小组件创建用于用户输入的文本字段。 在字段中输入文本后,Enter 键将在 Toast 消息中显示该文本

打开 Resources/layout/activity_main.axml 并将 EditText 元素添加到包含布局中。 以下示例 activity_main.axml 有一个已添加到 LinearLayoutEditText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/edittext"
        android:layout_width="match_parent"
        android:imeOptions="actionGo"
        android:inputType="text"
        android:layout_height="wrap_content" />
</LinearLayout>

在此代码示例中,EditText 属性 android:imeOptions 设置为 actionGo。 此设置将默认的 Done 操作更改为 Go 操作,以便点击 Enter 键触发 KeyPress 输入处理程序。 (通常,使用 actionGo 以便通过 Enter 键将用户带到所输入 URL 的目标。)

若要处理用户文本输入,请将以下代码添加到 MainActivity.cs 中的 OnCreate方法的末尾:

EditText edittext = FindViewById<EditText>(Resource.Id.edittext);
edittext.KeyPress += (object sender, View.KeyEventArgs e) => {
    e.Handled = false;
    if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter)
    {
        Toast.MakeText(this, edittext.Text, ToastLength.Short).Show();
        e.Handled = true;
    }
};

此外,请将以下 using 语句添加到 MainActivity.cs 的顶部(如果尚不存在):

using Android.Views;

此代码示例从布局中扩充 EditText 元素,并添加一个 KeyPress 处理程序,该处理程序定义在窗口小组件具有焦点时按下按键时要执行的操作。 在本例中,该方法定义为侦听 Enter 键(点击时),然后弹出一条包含已输入文本的 Toast 消息。 请注意,如果事件已被处理,Handled 属性应始终为 true。 这对于防止事件冒泡(这会导致文本字段中出现回车)是所需的。

运行应用程序并在文本字段中输入一些文本。 按 Enter 键时,将显示 Toast,如右图所示

Examples of entering text into EditText

本页的部分内容是根据 Android 开源项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 Attribution License 中的条款进行使用。本教程基于 Android Form Stuff 教程