如何在EditText
上设置数字限制?
与最大值一样,它是30,从31设置一个Toast
发布于 2017-12-04 09:37:06
这是一个答案,如果你想要检测是否有超过30个字符
首先,我建议您将其设置为.xml
文件,如下所示:
<EditText
android:id="@+id/someId"
android:maxLength="30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
然后,在您的onCreate()
中,您必须初始化它,如下所示:
EditText eText = (EditText)findViewById(R.id.someId);
现在您必须将Filters
添加到它中,如下所示:
eText.setFilters(new InputFilter[] {
new InputFilter.LengthFilter(30)
});
最后,添加一个TextWatcher()
来处理它,如下所示:
eText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count >= 30) Toast.makeText(MainActivity.this, "Max length of EditText is "+ String.valueOf(30), Toast.LENGTH_SHORT).show();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
如果用户试图输入大于n的数字,就有一个检测方法
你的问题很难理解,但是是的,最后我得到了你,你很幸运我一年前做了类似的事情.
首先创建这个名为inner class
(或其他名称)的Max30TextWatcher
public class Max30TextWatcher implements TextWatcher {
private EditText et;
Max30TextWatcher(EditText et) {
this.et = et;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if(TextUtils.isEmpty(editable.toString())){
return;
}
try {
if (Integer.valueOf(et.getText().toString()) > 30) {
Toast.makeText(MainActivity.this, "Max is 30 dawg", Toast.LENGTH_SHORT).show();
//put all the TextView ""
et.setText("");
}
}
catch(NumberFormatException e){
//no dots and comma accepted
et.setText("");
}
}
}
因此,您将.xml
更改为:
<EditText
android:id="@+id/someId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:maxLength="2" />
然后按如下方式调用新类:
et = (EditText)findViewById(R.id.someId);
et.addTextChangedListener(new Max30TextWatcher(et));
你完成了,你不能把一个大于30的数字:)
编码愉快!
发布于 2017-12-04 09:32:38
您可以在onTextChangeListener
上添加EditText
,在onTextChanged
中,您可以检查输入的数字是否大于30。如果大于30,则可以使用适当的消息显示Toast
,然后清除EditText
的文本。
https://stackoverflow.com/questions/47638816
复制相似问题