只有Text字母的EditText。怎么样?

时间:2018-10-05 08:20:53

标签: android android-softkeyboard

我的应用的主要用户安装了2种语言。英语等。默认系统语言不是英语。 用户只需使用软件键盘上的语言切换按钮即可。

我的应用程序中一个特定的EditText字段仅需要接受A-Z(大写问题不成问题)和空格,并且不能接受其他任何字符(没有数字,没有非拉丁字符等)。

我了解使用How to create EditText accepts Alphabets only in android?之类的InputFilter或TextWatcher派生的解决方案,但是您只允许应用简单地忽略不正确的文本,因此我需要使用户甚至无法首先看到非拉丁字母放在他们的屏幕键盘上(我知道可以使用硬件键盘,但现在还没问题)。

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
也无济于事(语言更改按钮在键盘上仍然可见)。

除了Android,我需要类似iPhone: Change Keyboard language programmatically的东西。

除了向应用程序添加假键盘外,我还有其他选择吗?

iOS具有.keyboardType = .asciiCapable,它可以在这种情况下使用

2 个答案:

答案 0 :(得分:1)

您可以使用输入过滤器并将其分配给“编辑文本”

请参阅下面的示例

using create-react-native-app

}

您可以为其分配编辑文本

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

除了a到z之外,用户将无法输入其他任何值

答案 1 :(得分:0)

我发现至少基于https://stackoverflow.com/a/49710730/1063214的半工作解决方案

imeOptions="flagForceAscii"  

在EditText上。

现在至少不显示非英语键盘(无论如何,数字都将被过滤。)