前提・実現したいこと
EditTextで入力時、入力の確定後に処理を行いたいため
以下のサイトを参考にしてC#で書き替えて実行すると、
GetSpans()メソッドで値がうまくとれないため
その後の処理がスルーされてしまっております。
http://gadgegy.com/android_edittext_changed/
よろしくお願いいたします。
ソースコード
・InputActivity.cs内でMyTextWatcherをTextChangedListenerへ設定
IntputEditText.AddTextChangedListener(new MyTextWatcher());
public class MyTextWatcher : Java.Lang.Object, Android.Text.ITextWatcher
{
int currentLength = 0;
bool keycodeFlag = false;
public void AfterTextChanged(Android.Text.IEditable e) { if (e.ToString().Length < currentLength || keycodeFlag) { keycodeFlag = false; return; } var unfixed = false;
// ↓↓spanned の要素が0となってしまい、文字の属性のチェックをスルーしてしまいます
var spanned = e.GetSpans(0, e.ToString().Length, Java.Lang.Class.FromType(typeof(Android.Text.Style.StyleSpan)));
if (spanned != null) { foreach(var obj in spanned) { if (obj is Android.Text.Style.UnderlineSpan) unfixed = true; } } if (!unfixed) { //確定検出時に行いたい処理はココ } } public void BeforeTextChanged(Java.Lang.ICharSequence arg0, int start, int count, int after) { currentLength = arg0.ToString().Length; } public void OnTextChanged(Java.Lang.ICharSequence arg0, int start, int before, int count) { if (count == 0) keycodeFlag = true; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/29 23:59