只允许两个十进制输入EditText

时间:2012-11-15 16:58:48

标签: android

我需要EditText只允许七个整数和两个十进制数。例如:7777777.99

我在onTouchListener事件中尝试使用此Regex,但无效。顺便说一句,这是正确的事件吗?

txtRespNumero.addTextChangedListener(new TextWatcher() {
                   int count = 0;    // Declare as Instance Variable
                   boolean isSeven = true; // Declare as Instance Variable

                          public void onTextChanged(CharSequence s, int start, int before,
                                  int count) {

                                count++;

                          }

                          public void beforeTextChanged(CharSequence s, int start, int count,
                                  int after) {


                          }

                          public void afterTextChanged(Editable s) {

                          if(isSeven){
                              if(count == 7){

                                  s.append(".");
                                  isSeven = true;
                              }
                           }

                           if(count < 7){

                               isSeven = true;

                           }

                          }
                      });

2 个答案:

答案 0 :(得分:1)

以这种方式试试......

- EditText属性Max Length设为10。

- 然后,当您接受EditeText值时,请使用以下示例将其转换为0000000.00的格式:

<强>例如

double d = 300.0;
DecimalFormat df = new DecimalFormat("0000000.00");
System.out.println(df.format(d));

///////////////////////////////////编辑部分/////// //////////////////////

另一种方法,就像你想要的那样.........

int count = 0;    // Declare as Instance Variable
boolean isSix = true; // Declare as Instance Variable

tx = (EditText) findViewById(R.id.editText_CheckIt);

        tx.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

                  count++;

            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {


            }

            public void afterTextChanged(Editable s) {

            if(isSeven){
                if(count == 7){

                    s.append(".");
                    isSeven = true;
                }
             }

             if(count < 7){

                 isSeven = true;

             }

            }
        });

答案 1 :(得分:0)

尝试使用onTextChanged,每当用户输入数字时(在您的情况下),只有触摸控件时,它才会被调用)。这个解决方案对我有用: EditText no more than x decimals android

很遗憾,android不允许你直接在XML中执行此操作。