根据Android中的第一个输入字符更改EditField中的数字限制?

时间:2013-02-22 10:17:51

标签: android editfield

我正在使用我的应用程序中的EditField,输入DIAL的电话号码。

现在我的查询是,

1) if begins with 1, it should be only 10 max digits after the 1, 

2) if 011, up to 15 digits max, but no fewer than 8 after 011.

请告诉我,如何在EditField中完成此操作。

2 个答案:

答案 0 :(得分:1)

将textWatcher添加到您的edittext并更改最大限制

答案 1 :(得分:0)

以下是您的解决方案的答案。它是一个非常差的解决方案,只是一个提示类型,但你可以根据你改变代码

final int LIMIT_FIRST = 10;
        final int LIMIT_SECOND = 15;
        final EditText et = (EditText) findViewById(R.id.edittext);
        et.setSingleLine();
        et.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String stringValue = s.toString().trim();
                int stringLength = stringValue.length();
                if(stringLength == 0){
                    InputFilter[] FilterArray = new InputFilter[1];
                    FilterArray[0] = new InputFilter.LengthFilter(1000);
                    et.setFilters(FilterArray);
                }else if(stringLength == 1){
                    if(stringValue.equalsIgnoreCase("1")){
                        InputFilter[] FilterArray = new InputFilter[1];
                        FilterArray[0] = new InputFilter.LengthFilter(LIMIT_FIRST);
                        et.setFilters(FilterArray);
                    }
                }else if(stringLength == 3){
                    if(stringValue.equalsIgnoreCase("011")){
                        InputFilter[] FilterArray = new InputFilter[1];
                        FilterArray[0] = new InputFilter.LengthFilter(LIMIT_SECOND);
                        et.setFilters(FilterArray);
                    }
                }
                System.out.println(s);
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                System.out.println(s);
            }

            @Override
            public void afterTextChanged(Editable s) {
                System.out.println(s);
            }
        });

如果这有助于你,请告诉我