您好我只想知道是否可以禁止用户输入的第一个号码为“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”
答案 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) {
}
});