Xamarin.Android 编辑文本
在本部分,你将使用 EditText 小组件创建用于用户输入的文本字段。 在字段中输入文本后,Enter 键将在 Toast 消息中显示该文本。
打开 Resources/layout/activity_main.axml 并将 EditText 元素添加到包含布局中。 以下示例 activity_main.axml 有一个已添加到 LinearLayout
的 EditText
:
<?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,如右图所示:
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 归属许可证中所述的术语使用。本教程基于 Android 窗体内容教程。