Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android: the first digit in the edit text can not be zero

I have an EditText element with a number input type. I don't want users to be able to enter 0 as the first digit. Can I enforce this using XML?

Here is what I have currently:

<EditText 
                android:id="@+id/main_edt_loan"
                android:layout_width="fill_parent"
                android:layout_height="40dip"
                android:background="@drawable/sample_editbox"
                android:ems="10"
                android:layout_margin="10dip"
                android:inputType="number"
                android:hint=""
                android:ellipsize="start" 
                android:maxLines="1"
                android:imeOptions="actionNext"
                android:textSize="18dip"
                android:gravity="center"
                android:digits="0123456789"
                android:maxLength="10"
                android:textColor="#000000"/>
like image 979
Dariush Malek Avatar asked Jul 05 '13 13:07

Dariush Malek


3 Answers

Its just simple as that.

edContactNumber.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.toString().length() == 1 && s.toString().startsWith("0")) {
                s.clear();
            }
        }
    });
like image 51
Prashant Jajal Avatar answered Nov 11 '22 11:11

Prashant Jajal


There is an alternative way in which you can use textWatcher .Check length of editable text inside afterTextChange method .if length is 1 and string is 0 than remove 0 .

like image 33
kaushal trivedi Avatar answered Nov 11 '22 13:11

kaushal trivedi


No. But what you can do is check in your activity every time the text changes and then do whatever needs to be done when the first symbol is a "0".

EditText main_edt_loan = (EditText) findViewById(R.id.main_edt_loan);
main_edt_loan.addTextChangedListener(new TextWatcher()
{
    public void afterTextChanged(Editable s) 
    {
        String x = s.toString
        if(x.startsWith("0"))
        {
            //your stuff here
        }
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after)
{

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

}
}); 
like image 5
Lukas Ruge Avatar answered Nov 11 '22 12:11

Lukas Ruge