我需要一个帮助,我想以编程方式隐藏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"/>
答案 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();
}