【问题标题】:How to hide number showing on google softkeyboard programmatically如何以编程方式隐藏谷歌软键盘上显示的数字
【发布时间】:2017-02-06 18:24:23
【问题描述】:

我需要帮助,我想以编程方式从谷歌软键盘中隐藏数字,并且只想要 CapsLock 上的字母,如您所见此链接http://www.androidcentral.com/how-add-dedicated-number-row-google-keyboard,它在键盘上方显示数字,我不想要。

我试过了:

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()}); // for making capslock on

<EditText
               android:id="@+id/firstName"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:inputType="textCapCharacters"
               android:maxLength="10"/>

但数字仍然显示,用户也可以输入数字,我不需要,我需要用户只能输入字母 A 到 Z

我找到了一个解决方案,用户无法输入 number ,但它没有显示大写字母(软键盘上的 Caps ON)。

这是解决方案,它现在对我有用:感谢每个人的支持。

edittext.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
                int end, Spanned dst, int dstart, int dend) {
            if(src.equals("")){ // for backspace
                return src;
            }
            if(src.toString().matches("[A-Z ]+")){
                return src;
            }
            return "";
        }
    }
});
<EditText
               android:id="@+id/firstName"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:inputType="textCapCharacters"
               android:maxLength="10"/>

【问题讨论】:

  • onTextChangedListener中文字更改后可以将数字替换为空。
  • 我认为用户可以写任何东西,但你可以用像"^[A-Z]+"这样的正则表达式来检查它
  • 更多用户可以安装自定义键盘,因此您无法控制键盘上显示的内容,但正如@DheerubhaiBansal 所说,您可以检查和处理用户写入的内容。

标签: android android-softkeyboard


【解决方案1】:

第一种方式:-在您的 EditText 上设置 android:inputType="textCapSentences"

但这只有在您的设备键盘启用自动大写设置时才有效。

第二种方式:-可以以编程方式使用InputFilters

edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});

更新答案: 尝试在您的 EditText 标记中添加这一行。

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

希望这对你有用。

【讨论】:

  • 两个都用过,还是出现数字
【解决方案2】:

用于验证输入字符串是否仅由字母组成的验证器示例

 import java.util.regex.Matcher;
 import java.util.regex.Pattern;


public class AlphabetValidator {

private Pattern pattern;
private Matcher matcher;

public static final String ALPHABET_PATTERN = "^[a-zA-Z]+[\\p{L} .'-]*$";

public AlphabetValidator() {
    pattern = pattern.compile(ALPHABET_PATTERN);
}

/**
 * Validate hex with regular expression
 *
 * @param hex hex for validation
 * @return true valid hex, false invalid hex
 */
public boolean validate(final String hex) {

    matcher = pattern.matcher(hex);
    return matcher.matches();
}
}

在java文件中包含

  private AlphabetValidator alphabetValidator;

  //after submission check

  if (!alphabetValidator.validate(fieldname.getText().toString())) {
                        fieldname.setError("Error message");
                        fieldname.requestFocus();
                    }

【讨论】:

  • 但是用户也可以输入数字,它只在用户输入数字时显示错误消息,我不想要这个。我希望数字从谷歌键盘隐藏或者他不能在上面输入数字
  • this 可能会有帮助
猜你喜欢
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
相关资源
最近更新 更多