こんにちは、アンドロイドの EditText のキーパッドに数字と文字のみを表示したいのですが、属性を追加しようとしましたが、うまくいきandroid:inputType = text|number
ませんでした。
他のより良い提案があれば助けてください。前もって感謝します。
こんにちは、アンドロイドの EditText のキーパッドに数字と文字のみを表示したいのですが、属性を追加しようとしましたが、うまくいきandroid:inputType = text|number
ませんでした。
他のより良い提案があれば助けてください。前もって感謝します。
そのためにフィルターを使用します。ここでは、フィルターのコードを追加しています。
EditText etName = (EditText)findViewById(R.id.etName);
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
etName.setFilters(new InputFilter[]{filter});
digits パラメータを editText に追加してみてください:
android:digits="abcde.....012345789"
私のために働いたこの方法を試してみてください:
public static InputFilter[] getFilter(String blockChars) {
return new InputFilter[]{(source, start, end, dest, dstart, dend) -> {
for (int i = start; i < end; i++) {
if (source != null && blockChars.contains("" + source.charAt(i))) {
return source.subSequence(start, i);
}
}
return null;
}};
編集テキストにこの行を追加します
edittext.setFilters(getFilter("@~"));
//大兄弟,这么做就可以了。
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (isChineseChar(source.charAt(i))) {
return "";
}
}
return null;
}
};
etName.setFilters(new InputFilter[]{filter});
//一条简单的规则。
private static boolean isChineseChar(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS;
}