在Android中为我的EditText实现InputFilter时遇到的问题
我想限制我的应用程序的用户在编辑文本中输入值。这些值应该如下所示:3/54/32 第一个数字:0..13 中间数:0..7 最后一个号码:0..255 斜杠应该在编辑文本中显示 我已经有一个IP地址的InputFilter,但我不理解它…;-)在Android中为我的EditText实现InputFilter时遇到的问题,android,android-edittext,input-filtering,input-filter,Android,Android Edittext,Input Filtering,Input Filter,我想限制我的应用程序的用户在编辑文本中输入值。这些值应该如下所示:3/54/32 第一个数字:0..13 中间数:0..7 最后一个号码:0..255 斜杠应该在编辑文本中显示 我已经有一个IP地址的InputFilter,但我不理解它…;-) //使用输入筛选器输入IP地址 InputFilter[]过滤器=新的InputFilter[1]; 筛选器[0]=新的InputFilter(){ 公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int
//使用输入筛选器输入IP地址
InputFilter[]过滤器=新的InputFilter[1];
筛选器[0]=新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、跨区目标、int开始、int结束){
如果(结束>开始){
字符串destTxt=dest.toString();
String resultingTxt=destTxt.substring(0,dstart)+source.subSequence(start,end)+destTxt.substring(dend);
如果(!resultingTxt.matches(“^\\d{1,3}”(\\d{1,3})(\\.(\\d{1,3})(\\.(\\d{1,3})?)?)?”)
返回“”;
}否则{
String[]splits=resultingTxt.split(“\\”);
对于(int i=0;i 255){
返回“”;
}
}
}
}
返回null;
}
};
et_路由器_ip.设置过滤器(过滤器);
如果有人能帮我,那就太好了 如果将编辑文本除以3个不同的输入视图,效果会更好 为此,请准备您的通用函数,其中必须传递最小输入值、最大输入值和编辑文本Obj,如:
public void Edit_Validation(int MinLen, int MaxLen, EditText edt)
throws NumberFormatException {
if (edt.getText().toString().length() <= 0) {
edt.setError("Required.");
data = null;
} else if (Double.valueOf(edt.getText().toString()) < MinLen
|| Double.valueOf(edt.getText().toString()) > MaxLen) {
edt.setError("Out of Range " + MinLen + " or " + MaxLen);
data = null;
} else {
data = edt.getText().toString();
} } // END OF Edittext validation
现在,在接下来的两个Edit Text Watcher中调用Edit_Validation(…)的方法相同
我认为这将是容易和耗时的。我在我的一个应用程序中也使用了同样的方法
如果你得到了准确的答案,请与我分享。中间的数字是从0到7,但在你的例子中,它是54。顺便说一下,如果你想在固定位置显示反斜杠,你可能需要浏览一行3个文本。这将真正缓解问题
public void Edit_Validation(int MinLen, int MaxLen, EditText edt)
throws NumberFormatException {
if (edt.getText().toString().length() <= 0) {
edt.setError("Required.");
data = null;
} else if (Double.valueOf(edt.getText().toString()) < MinLen
|| Double.valueOf(edt.getText().toString()) > MaxLen) {
edt.setError("Out of Range " + MinLen + " or " + MaxLen);
data = null;
} else {
data = edt.getText().toString();
} } // END OF Edittext validation
// EditText Validateion
Your_First_EditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
try {
Edit_Validation(0,13, Your_First_EditText);
} catch (Exception e) {
Log.e("Invalid Value", "Negative Value");
}
}
});