我想在编辑文本中只允许使用字母,数字,和_。
所以我补充道:
android:digits="0123456789,qwertzuiopasdfghjklyxcvbnm,_, "
问题是它有时允许,
。
如果我在真正的键盘中输入它,只允许_
,而不是在Android键盘中输入。
任何想法我做错了什么?
答案 0 :(得分:1)
尝试将字符串更改为以下内容:
android:digits="0123456789qwertzuiopasdfghjklyxcvbnm_ "
<强>更新强>
我在编辑文本中添加了一个“文本过滤器”(FilterFormatted),发现它只会触发android:digits中指定/允许的字符(我道歉我的解决方案是monodroid所以需要翻译,但这是一个开始。我会考虑在你的输入过滤器中使用正则表达式来满足你的所有要求,如果它不允许空格,那么单独的数字可能是不够的。)
<?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/edit_text_1"
android:layout_width="500dp"
android:layout_height="100dp"
android:digits="0123456789qwert_">
<!--android:inputType="textFilter"-->
</EditText>
</LinearLayout>
[Activity(Label = "LifeCycles", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity, IInputFilter
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
EditText et = FindViewById<EditText>(Resource.Id.edit_text_1);
et.SetFilters(new[] { (Android.Text.IInputFilter)this });
}
public ICharSequence FilterFormatted(ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
{
// no log entry when non android:digit keys pressed...
Android.Util.Log.Info("EDIT_TEXT_FILTER","start...");
for (int i = start; i < end; i++)
{
if (Character.IsWhitespace(source.CharAt(i)))
{
//return "";
new Java.Lang.String(" ");
}
}
return null;
}
}