如何在EditText
上设置数字限制?
像最大数字一样,它是30,从31设置Toast
?
答案 0 :(得分:6)
如果你想检测是否有超过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
的{{1}}(或任何名称)
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" />
你完成了,你不能把数字高于30:)
快乐的编码!
答案 1 :(得分:1)
您可以在onTextChangeListener
和EditText
内添加onTextChanged
,您可以检查输入的数字是否大于30。如果大于30,您可以显示带有相应消息的Toast
,然后清除EditText