Adr*_*nta 3 android android-layout android-edittext
如何设置数字限制EditText?
像最大数字那样是30,从31集开始Toast?
如果您想检测是否超过30个字符,这是一个答案
首先,我建议您.xml按如下方式在文件中进行设置:
<EditText
android:id="@+id/someId"
android:maxLength="30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)
然后在onCreate()你必须初始化它,如下所示:
EditText eText = (EditText)findViewById(R.id.someId);
Run Code Online (Sandbox Code Playgroud)
现在你必须添加Filters如下:
eText.setFilters(new InputFilter[] {
new InputFilter.LengthFilter(30)
});
Run Code Online (Sandbox Code Playgroud)
最后你添加一个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
}
});
Run Code Online (Sandbox Code Playgroud)
有一个答案可以检测用户是否尝试将数字设置为高于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("");
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以你改成了.xml这个:
<EditText
android:id="@+id/someId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:maxLength="2" />
Run Code Online (Sandbox Code Playgroud)
你按如下方式调用新类:
et = (EditText)findViewById(R.id.someId);
et.addTextChangedListener(new Max30TextWatcher(et));
Run Code Online (Sandbox Code Playgroud)
你完成了,你不能把数字高于30 :)
快乐的编码!
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |