在Android中编辑文本添加输入约束?

时间:2014-07-18 12:25:55

标签: android text android-edittext edit

我的条件是需要在应用程序中输入一些数值。

例:

  1. 如果用户输入整数,则最大长度应为8位。例如:12345678

  2. 如果用户想输入小数值,他最多只能输入2个小数点。   例如:1.03,123.95

  3. 如果用户输入整数8位数,那么他也可以输入小数位数,最多2位小数。例如:12345678.12

  4. 所以我们有以下有效输入:

         1.  12345678
         2.  123.45
         3.  12345678.98
    

    如何实现上述情况?

1 个答案:

答案 0 :(得分:1)

你走了。这正是你想要的......

    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.InputFilter;
    import android.text.Spanned;
    import android.text.TextWatcher;
    import android.util.Log;
    import android.widget.EditText;

    public class EditTextLogic extends Activity
    {
        EditText mEditText;
        String TEMP="",INPUT="";
        @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.edit_tesxt_logic);  
            mEditText =(EditText) findViewById(R.id.textView1);

            mEditText.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}

                @Override
                public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}

                @Override
                public void afterTextChanged(Editable Token) 
                {
                    if(Token.toString().length()<INPUT.length())
                    {
                        INPUT=Token.toString();
                    }
                }
            });
            mEditText.setFilters(new InputFilter[] {
                    new InputFilter() {
                        @Override
                        public CharSequence filter(CharSequence input, int arg1,
                                int arg2, Spanned arg3, int arg4, int arg5) 
                        {
                            CharSequence returned = validate(input.toString());
                            return returned;
                        }
                    }
            });

        }

        private CharSequence validate(String Token) {
            Log.i("Token",""+Token);
            TEMP = INPUT;
            TEMP += Token; 
            if(TEMP.contains("."))
            {
                try
                {
                    String FractionNo = TEMP.split("\\.")[1];
                    if(FractionNo.length()> 2)
                    {

                        return "";
                    }
                    else
                    {
                        INPUT = TEMP;
                        return Token;
                    }
                }
                catch(ArrayIndexOutOfBoundsException e)
                {
                    INPUT = TEMP;
                    return Token;
                }
            }
            else
            {
                if(TEMP.length()>8)
                {
                    return "";
                }
                else
                {
                    INPUT = TEMP;
                    return Token;
                }
            }
        }
    }

这是你的XML:

<EditText
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"
        android:singleLine="true"/>

干杯! 享受编码!!