android:编辑文本中的第一个数字不能为零

jv2fixgn  于 2023-01-07  发布在  Android
关注(0)|答案(7)|浏览(192)

我有一个数字输入类型的EditText元素。我不希望用户能够输入0作为第一个数字。我可以使用XML强制这一点吗?
以下是我目前拥有的:

<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"/>
f1tvaqid

f1tvaqid1#

就这么简单。

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();
            }
        }
    });
krugob8w

krugob8w2#

还有一种方法可以使用textWatcher。检查afterTextChange方法中可编辑文本的长度。如果长度为1,字符串为0,则删除0。

5anewei6

5anewei63#

不需要。但是你可以做的是在每次文本更改时签入你的活动,然后在第一个符号是“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)
{

}
});
fivyi3re

fivyi3re4#

这是Kotlin密码

mainEdtLoant.addTextChangedListener(
    afterTextChanged = {
        if (!it.isNullOrBlank() && it[0] == '0') {
            it.delete(0, 1)
        }
    }
)
t8e9dugd

t8e9dugd5#

public class PreventZeroAtBeginningFilter implements InputFilter {

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (dest.toString().equalsIgnoreCase("")) {
            String charSet = "0";
            if (source != null && charSet.contains(("" + source))) {
                return "";
            }
        }
        return null;
    }
}
kkbh8khc

kkbh8khc6#

private void preFix() {
    phone.setText("+243");
    Selection.setSelection(phone.getText(), phone.getText().length());
    phone.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            if (s.toString().startsWith("+2430")) {
                phone.setText("+243");
                Selection.setSelection(phone.getText(), phone.getText().length());
            }

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {
            if (!s.toString().startsWith("+243")) {
                phone.setText("+243");
                Selection.setSelection(phone.getText(), phone.getText().length());
            }
        }
    });
}
sulc1iza

sulc1iza7#

试试这个
在XML中,

android:text="0"

在 java

edit.setSelection(1);

相关问题