我想禁用或限制用户在 EditText 中输入表情符号。我尝试添加一个带有正则表达式的输入过滤器,但没有成功。它一次又一次地重复相同的文本。
public class EmojiFilter : Java.Lang.Object, IInputFilter
{
string regex = "^[0-9A-Za-z #$,\\-\\.]{0,255}$";
public ICharSequence FilterFormatted(ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
{
if (System.Text.RegularExpressions.Regex.IsMatch(dest.ToString(), regex) || dest.ToString().Equals(""))
{
return new Java.Lang.String(source.ToString());
}
return new Java.Lang.String(string.Empty);
}
}
我想在我的应用程序中的所有 EditText 中禁用它。有没有更简单的方法来实现这一点?
编辑 它仍然不适用于@Ilya Lavrov 代码。我仍然需要一些笑脸。
最佳答案
您需要将 EmojiFilter
添加到您的 EditText。这是实现:
public class EmojiFilter: Java.Lang.Object, IInputFilter
{
public ICharSequence FilterFormatted(ICharSequence source, int start, int end, ISpanned dest, int dstart, int dend)
{
for (int i = start; i < end; i++)
{
int type = Character.GetType(source.CharAt(i));
if (type == Character.Surrogate || type == Character.OtherSymbol)
return new Java.Lang.String(string.Empty);
else
return source;
}
return source;
}
}
使用方法:
YourCustomEditText.SetFilters(new IInputFilter[] { new EmojiExcludeFilter() });
要在您的应用程序中的所有 EditText 中禁用它,您需要像这样创建自己的控件:
[Register("EmojiExcludedEditText")]
public class EmojiExcludedEditText: EditText
{
...
public EmojiExcludedEditText(Context context) : base(context)
{
SetFilters(new IInputFilter[] { new EmojiExcludeFilter() });
}
...
}
编码愉快! :)
关于android - 从软键盘 android xamarin 禁用表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55042393/