Xamarin.Android のテキストの編集

このセクションでは、EditText ウィジェットを使用して、ユーザー入力用のテキスト フィールドを作成します。 このフィールドにテキストを入力して Enter キーを押すと、トースト メッセージにテキストが表示されます。

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:imeOptionsactionGo に設定されています。 この設定により、既定の Done アクションが Go アクションに変更され、Enter キーをタップすると、KeyPress 入力ハンドラーがトリガーされます (通常、actionGo は、Enter キーによって、入力された URL のターゲットにユーザーを移動するために使用されます)。

ユーザーのテキスト入力を処理するには、MainActivity.csOnCreate メソッドの最後に次のコードを追加します。

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 キー (タップされたとき) をリッスンし、入力されたテキストを含むトースト メッセージをポップアップするように定義されています。 イベントが処理された場合、Handled プロパティは常に true である必要があることに注意してください。 これは、イベントがバブルアップする (これにより、テキスト フィールドでキャリッジ リターンが発生します) のを防ぐために必要です。

アプリケーションを実行し、何からのテキストをテキスト フィールドに入力します。 Enter キーを押すと、右側に示すようにトーストが表示されます。

EditText にテキストを入力する例

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、 Creative Commons 2.5 の属性ライセンス で説明されている条件に従って使用される作業に基づく変更です。このチュートリアルは、 Android Form Stuff チュートリアルに基づいています