只有 ascii 字母的 EditText。如何?
EditText with only ascii letters. How?
我应用的主要用户安装了 2 种语言。英语等。默认系统语言不是英语。
用户只需使用软件键盘上的语言切换按钮即可。
我的应用程序中的一个特定 EditText 字段只需要接受 A-Z(大写问题不是问题)和空格,不能接受其他字符(没有数字、没有非拉丁字符等)。
我了解使用 How to create EditText accepts Alphabets only in android? 之类的 InputFilters 或使用 TextWatcher 派生的解决方案,但你只允许应用程序简单地忽略不正确的文本,我需要能够让用户甚至无法看到非 latin1 字母在他们的屏幕键盘上排在第一位(我知道可以使用硬件键盘,目前这不是问题)。
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
也无济于事(语言更改按钮在键盘上仍然可见)。
我需要类似 iPhone: Change Keyboard language programmatically 的内容,但 Android。
除了向我的应用程序添加假键盘外,我还有其他选择吗?
iOS 有 .keyboardType = .asciiCapable
并且在这种情况下有效
您可以使用输入过滤器并将其分配给编辑文本
参考下面的例子
public class AlphabetInputFilter implements InputFilter {
Pattern mPattern;
public AlphabetInputFilter() {
mPattern = Pattern.compile("[a-z]");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String formatedSource = dest.subSequence(0, dstart).toString();
String destPrefix = source.subSequence(start, end).toString();
String destSuffix = dest.subSequence(dend, dest.length()).toString();
CharSequence match = TextUtils.concat(formatedSource, destPrefix, destSuffix);
Matcher matcher = mPattern.matcher(match);
if (!matcher.matches())
return "";
return null;
}
}
你可以分配它编辑文本
mEdittext.setFilters(new InputFilter[]{
new AlphabetInputFilter()});
用户将无法输入 a 到 z 以外的任何值
我至少找到了基于
的半可行解决方案
imeOptions="flagForceAscii"
在 EditText 上。
现在至少不显示非英文键盘(并且数字等)无论如何都会被过滤。
我应用的主要用户安装了 2 种语言。英语等。默认系统语言不是英语。 用户只需使用软件键盘上的语言切换按钮即可。
我的应用程序中的一个特定 EditText 字段只需要接受 A-Z(大写问题不是问题)和空格,不能接受其他字符(没有数字、没有非拉丁字符等)。
我了解使用 How to create EditText accepts Alphabets only in android? 之类的 InputFilters 或使用 TextWatcher 派生的解决方案,但你只允许应用程序简单地忽略不正确的文本,我需要能够让用户甚至无法看到非 latin1 字母在他们的屏幕键盘上排在第一位(我知道可以使用硬件键盘,目前这不是问题)。
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
也无济于事(语言更改按钮在键盘上仍然可见)。
我需要类似 iPhone: Change Keyboard language programmatically 的内容,但 Android。
除了向我的应用程序添加假键盘外,我还有其他选择吗?
iOS 有 .keyboardType = .asciiCapable
并且在这种情况下有效
您可以使用输入过滤器并将其分配给编辑文本
参考下面的例子
public class AlphabetInputFilter implements InputFilter {
Pattern mPattern;
public AlphabetInputFilter() {
mPattern = Pattern.compile("[a-z]");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String formatedSource = dest.subSequence(0, dstart).toString();
String destPrefix = source.subSequence(start, end).toString();
String destSuffix = dest.subSequence(dend, dest.length()).toString();
CharSequence match = TextUtils.concat(formatedSource, destPrefix, destSuffix);
Matcher matcher = mPattern.matcher(match);
if (!matcher.matches())
return "";
return null;
}
}
你可以分配它编辑文本
mEdittext.setFilters(new InputFilter[]{
new AlphabetInputFilter()});
用户将无法输入 a 到 z 以外的任何值
我至少找到了基于
的半可行解决方案imeOptions="flagForceAscii"
在 EditText 上。
现在至少不显示非英文键盘(并且数字等)无论如何都会被过滤。