是否可以禁止EditText中的第一个数字为" 0"

时间:2014-06-25 10:40:49

标签: android android-edittext

您好我只想知道是否可以禁止用户输入的第一个号码为“0”。

<EditText
        android:id="@+id/editText1"
        android:layout_width="50dp"
        android:layout_height="35dp"  
        android:layout_marginBottom="2dp" 
        android:maxLength="2"
        android:inputType="number"
        android:digits="123456789">
        <requestFocus />
    </EditText>

然而,使用此代码可以防止用户输入“0”,但我希望第一个数字不是“0”

3 个答案:

答案 0 :(得分:12)

如果您想避免用户仅在开头输入0,请尝试以下操作:

editText1.addTextChangedListener(new TextWatcher(){
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
            if (editText1.getText().toString().matches("^0") )
            {
                // Not allowed
                Toast.makeText(context, "not allowed", Toast.LENGTH_LONG).show();
                editText1.setText("");
            }
        }
        @Override
        public void afterTextChanged(Editable arg0) { }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
    }); 

答案 1 :(得分:1)

为此,在Java中,您可以扩展InputFilter类并为10设置EditText的最小值:

package your.package.name

import android.text.InputFilter;
import android.text.Spanned;

public class InputFilterMin implements InputFilter {

    private int min;

    public InputFilterMin(int min) {
        this.min = min;
    }

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {   
        try {
            int input = Integer.parseInt(dest.toString() + source.toString());
            if (input >= min)
                return null;
        } catch (NumberFormatException nfe) { }     
        return "";
    }
}

然后在您的活动中使用此课程:

EditText et = (EditText) findViewById(R.id.editText1);
et.setFilters(new InputFilter[]{ new InputFilterMin(10)});

现在允许用户输入等于或大于10的值。

答案 2 :(得分:0)

你可以试试这个......

editText.addTextChangedListener(new TextWatcher() {

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

          long data=Long.parseLong(editText.toString());
          editText.setText(""+data);
        }

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

        }

        @Override
        public void afterTextChanged(Editable arg0) {

        }
    });