android-限制edittext仅接受波斯语字符

android-限制edittext仅接受波斯语字符,android,Android,我想限制我的edittext只接受波斯语字符。像ضثق等角色 我曾尝试使用xml数字,但没有成功 我怎样才能做到 您可以对编辑文本使用InputFilter。可以附加到可编辑项以约束对其所做的更改 InputFilter filter = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dst

我想限制我的edittext只接受波斯语字符。像ضثق等角色

我曾尝试使用xml数字,但没有成功


我怎样才能做到

您可以对编辑文本使用InputFilter。可以附加到可编辑项以约束对其所做的更改

InputFilter filter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end, 
            Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                String text = String.valueOf(source.charAt(i));
                Pattern RTL_CHARACTERS = Pattern.compile("[\u0600-
                \u06FF\u0750-\u077F\u0590-\u05FF\uFE70-\uFEFF]");
                Matcher matcher = RTL_CHARACTERS.matcher(text);
                if (matcher.find()) {
                    return "";  // it's Persian
                }
            }
            return null;
        }
    };
InputFilter过滤器=新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
for(int i=start;i
使用此筛选器可检测波斯语/波斯语字符,并将其限制为edittext。使用将此筛选器设置为EditText

editText.setFilters(新的InputFilter[]{filter})


这将限制波斯语/波斯语字符

这些代码也有帮助:

    InputFilter nameFilter = 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))) { // if digit!

                    String blockCharacterSet = getString(R.string.all_fa_words) + ' ';

                    if (blockCharacterSet.contains(String.valueOf(source.charAt(i)))) {
                        edtNameEdit.setHintTextColor(getResources().getColor(R.color.materialWhite));
                        edtNameEdit.setHint(getString(R.string.name_lastname));
                        return null;
                    } else {
                        edtNameEdit.setHintTextColor(getResources().getColor(R.color.sPink));
                        edtNameEdit.setHint(getString(R.string.name_lastname) + ' ' + getString(R.string.must_fa));
                        return edtNameEdit.getText().toString();
                    }
                } else {
                    return null;
                }
            }
            return null;
        }
    };
    edtNameEdit.setFilters(new InputFilter[]{nameFilter});
    edtNameEdit.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
InputFilter nameFilter=新的InputFilter(){
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
for(int i=start;i
只是想一想[不完全确定]你能试试这个吗1。在XML中输入数字属性(您已经这样做了)2。在Java类上,放置这两行editText.setInputType(InputType.TYPE\u class\u TEXT);setKeyListener(DigitsKeyListener.getInstance(“您的波斯语字符”);您可以发布您的xml代码以供参考吗?