質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

5082閲覧

Xamarin.Android上でのソフトキーボードの1文字削除の文字コードの取得方法

M.inose

総合スコア17

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/04/26 06:45

###前提・実現したいこと
Xamarin.Android上でのソフトキーボードでの1文字削除の文字コードの取得方法について

Xamarin.Androidでアプリケーションを開発しております。
EditTextコントロールでソフトキーボードによる数値入力時に1文字削除の文字コードを取得する必要があり
いろいろと試行錯誤をしておりますが取得できません。

###試したこと

共通条件
EditTextコントロールのソフトキーボードの入力条件は
android:inputType="number"
です。

1.最初にKeyPressイベントによる1文字削除の文字コードの取得を試みました。

C#

1 EditText Text; 2 Text = new EditText(this) 3 4 Text.KeyPress += (sender, e) => 5 { 6 if (e.Event.Action == KeyEventActions.Down && (e.KeyCode == Keycode.Del)) 7 { 8 // 1文字削除の文字コードを取得した後の処理を実装; 910 } 11 else 12 { 13 e.Handled = false; 14 } 15 };

しかしながら、ソフトキーボード上で1文字削除のボタンをタップしても、イベントが発生しませんでした。
0から9の数字ボタンはイベントが発生します。

2.次にOnKeyListenerによる1文字削除の文字コードの取得を試みました。

C#

1 Text.SetOnKeyListener(this); 2 3 public bool OnKey(View v, Keycode keyCode, KeyEvent e) 4 { 5 if (e.Action == KeyEventActions.Down && keyCode.Equals(Keycode.Del)) 6 { 7 // 1文字削除の文字コードを取得した後の処理を実装; 89 return true; 10 } 11 return false; 12 }

この方法でも、ソフトキーボード上で1文字削除のボタンをタップしても、イベントが発生しませんでした。
0から9の数字ボタンはイベントが発生します。

1文字削除の文字コードの取得方法について
皆様にご教示いただきたく、お願い申し上げます。

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境
Visual studio 2015
Xamain 4.3.0.784
Xamain.Android 7.1.0.41
Android SDK Tools 25.2.5
Android API 6.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようなコードで、

OnKey:Del

が出力されるのを確認したので、 IOnKeyListener.OnKey で Delete キーは検知できています。
質問者さんのプログラムとくらべてみてください。

Main.xml

<?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/text1" android:inputType="number" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

MainActivity.cs

using Android.App; using Android.Widget; using Android.OS; using Android.Views; namespace KeyTest { [Activity(Label = "KeyTest", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : Activity, View.IOnKeyListener { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Main); var text1 = FindViewById<EditText>(Resource.Id.text1); text1.KeyPress += (sender, e) => { System.Diagnostics.Debug.WriteLine("KeyPress:" + e.KeyCode); }; text1.SetOnKeyListener(this); } bool View.IOnKeyListener.OnKey(View v, Keycode keyCode, KeyEvent e) { System.Diagnostics.Debug.WriteLine("OnKey:" + e.KeyCode); return false; } } }

投稿2017/04/26 08:41

amay077

総合スコア1075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

M.inose

2017/04/26 11:54

早々に、ご回答いただき大変にありがとうございます。 具体的なサンプルソースコードを提示いただき大変にありがとうございます。 動作を確認致しました。 以下の様な動作でした。 現在のキーボードが 英語(米国)-Androidキーボード(AOSP) の場合は、0~9の数字入力時はイベントが発生するのですが OnKey:Delのイベントは発生しませんでした。 現在のキーボードが  日本語-Japanese IME の場合は、OnKey:Delのイベントは発生するのですが 逆に0~9の数字入力時はイベントが発生しませんでした。 お手数をお掛けして大変に申し訳ございませんが 何か情報があれば、ご教示いただきたく お願い申し上げます。
amay077

2017/04/26 15:02

ここまで来ると、もはや Xamarin ではなく "Android" についてなので、 Android-Java で同じ事象が発生するかを確認の上、 "Android の質問" として再投稿された方が、識者が多く回答が得られる可能性が高いと思いますよ。
M.inose

2017/04/27 01:10

amay077様 ご助言をいただき、大変にありがとうございます。 その様にしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問