如何以编程方式隐藏在谷歌软键盘上显示的数字

时间:2017-02-06 09:42:30

标签: android android-softkeyboard

我需要一个帮助,我想以编程方式隐藏Google软键盘中的数字,并且只想要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

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

以下是解决方案,它现在对我有用:感谢EveryOne的支持。

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"/>

2 个答案:

答案 0 :(得分:1)

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

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

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

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

更新答案: 尝试在EditText标记中添加此行。

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

希望这对你有用。

答案 1 :(得分:0)

验证输入字符串是否仅为字母的验证器的示例

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