android:数字不能与_和,

时间:2017-03-28 19:42:13

标签: android android-layout android-studio

我想在编辑文本中只允许使用字母,数字,和_。

所以我补充道:

android:digits="0123456789,qwertzuiopasdfghjklyxcvbnm,_, "

问题是它有时允许,

如果我在真正的键盘中输入它,只允许_,而不是在Android键盘中输入。

任何想法我做错了什么?

1 个答案:

答案 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;
    }
}