Mono for Android の EditText コントロールで非常に奇妙な問題が発生しています。私のソリューションは 2.3 を対象としており、T Mobile VivaCity でデバッグしています。EditText の AXML は次のとおりです。
<EditText
android:inputType="text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/ctl_searchText" />
EditText を含むビューを表示すると、キーボードが自動的に表示されますが、これは問題ではありません。問題は、キーボードの数字をタップしても数字を入力できないことです。テキスト フィールドに数字を表示するには、キーを押したままコンテキスト メニューから数字を選択する必要があります。この方法を使用して番号を入力すると、それを削除することはできません。私はあらゆる種類の入力方法を試しましたが、SO で同様の問題を探しても無駄でした。これはデバイスの問題のように聞こえますか? または、コード/AXML で行っていない明白な何かがありますか?
==編集==
問題を絞り込んだと思います。これは、EditText で使用される KeyPress イベント ハンドラと関係があります。EditText は検索フィールドを表すため、属性 android:singleLine="true" を追加して、リターン キーが余分な行を追加するのを止め、代わりに「完了」と言いました。コントロールに KeyPress イベント ハンドラーを追加すると、数値の入力ができなくなりますが、ハンドラーがないと、正常に機能し始めます。ここに私が持っているものがあります:
<EditText
android:id="@+id/ctl_searchText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true" />
EditText ctl_searchText = FindViewById<EditText>(Resource.Id.ctl_searchText);
ctl_searchText.KeyPress += (object sender, View.KeyEventArgs e) =>
{
if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter)
{
Toast.MakeText (this, ctl_searchText.Text, ToastLength.Short).Show ();
e.Handled = true;
}
};
このコードでは、テキスト フィールドに数字を入力することはできませんが、文字を入力することはできます。イベント ハンドラーを削除すると、再び機能し、すべての文字を入力できるようになります。調査を続けますが、これは非常に奇妙です。