【发布时间】:2017-12-04 17:29:30
【问题描述】:
如何设置EditText的数量限制?
像最大数量一样,它是 30,从 31 设置一个 Toast?
【问题讨论】:
标签: android android-layout android-edittext
如何设置EditText的数量限制?
像最大数量一样,它是 30,从 31 设置一个 Toast?
【问题讨论】:
标签: android android-layout android-edittext
如果您想检测是否有超过 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 的数字 :)
编码愉快!
【讨论】:
您可以在EditText 和onTextChanged 内添加onTextChangeListener,您可以检查输入的数字是否大于30。如果大于 30,则可以显示Toast 和相应的消息,然后清除EditText 的文本
【讨论】: