有辦法為Android中的EditText定義min和max值嗎?我想為EditText.例如:如果任何人試圖在其中輸入一個月值,則該值必須介于1-12之間。我可以用TextWatcher但我想知道在布局文件或其他地方是否有其他方法可以做到這一點。編輯:我不想限制字符計數。我想限制價值。例如,如果我限制月份EditText當我輸入12個字符時,它會接受它,但是如果我輸入了22個字符,它就不能在我進入的時候接受它。
3 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
min==3
min>=10
EditText
InputFilterMinMax
InputFilter
OnFocusChangeListener
EditText
package test;import android.text.InputFilter;import android.text.Spanned;public class InputFilterMax implements InputFilter {private int max;public InputFilterMax(int max) { this.max = max;}public InputFilterMax(String max) { this.max = Integer.parseInt(max);}@Overridepublic CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { try { String replacement = source.subSequence(start, end).toString(); String newVal = dest.toString().substring(0, dstart) + replacement +dest.toString().substring(dend, dest.toString().length()); int input = Integer.parseInt(newVal); if (input<=max) return null; } catch (NumberFormatException nfe) { } //Maybe notify user that the value is not good return "";}}
OnFocusChangeListenerMin
package test;import android.text.TextUtils;import android.view.View;import android.view.View.OnFocusChangeListener;public class OnFocusChangeListenerMin implements OnFocusChangeListener {private int min;public OnFocusChangeListenerMin(int min) { this.min = min;}public OnFocusChangeListenerMin(String min) { this.min = Integer.parseInt(min);}@Overridepublic void onFocusChange(View v, boolean hasFocus) { if(!hasFocus) { String val = ((EditText)v).getText().toString(); if(!TextUtils.isEmpty(val)){ if(Integer.valueOf(val)<min){ //Notify user that the value is not good } } }}}
InputFilterMax
OnFocusChangeListenerMin
EditText
onFocusChangeListener
.
mQteEditText.setOnFocusChangeListener( new OnFocusChangeListenerMin('20');mQteEditText.setFilters(new InputFilter[]{new InputFilterMax(getActivity(),'50')});
- 3 回答
- 0 關注
- 695 瀏覽
添加回答
舉報
0/150
提交
取消