android控件edittext输入类型
我有一个编辑文本,我想控制它。输入类型是numberDecimal,我想这样写。我想在小数点前设置0>最大值10,小数点后设置0>最大值2 我搜索并找到了一些InputFilter示例android控件edittext输入类型,android,android-edittext,android-inputtype,android-input-filter,Android,Android Edittext,Android Inputtype,Android Input Filter,我有一个编辑文本,我想控制它。输入类型是numberDecimal,我想这样写。我想在小数点前设置0>最大值10,小数点后设置0>最大值2 我搜索并找到了一些InputFilter示例 edittext.setFilters(new InputFilter[] { new DigitsKeyListener( Boolean.FALSE, Boolean.TRUE) { int beforeDecimal = 10, afterDecimal = 2;
edittext.setFilters(new InputFilter[] { new DigitsKeyListener(
Boolean.FALSE, Boolean.TRUE) {
int beforeDecimal = 10, afterDecimal = 2;
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
String etText = edittext.getText().toString();
String temp = edittext.getText() + source.toString();
if (temp.equals(".")) {
return "0.";
} else if (temp.toString().indexOf(".") == -1) {
// no decimal point placed yet
if (temp.length() > beforeDecimal) {
return "";
}
} else {
int dotPosition ;
int cursorPositon = edittext.getSelectionStart();
if (etText.indexOf(".") == -1) {
Log.i("First time Dot", etText.toString().indexOf(".")+" "+etText);
dotPosition = temp.indexOf(".");
Log.i("dot Positon", cursorPositon+"");
Log.i("dot Positon", etText+"");
Log.i("dot Positon", dotPosition+"");
}else{
dotPosition = etText.indexOf(".");
Log.i("dot Positon", cursorPositon+"");
Log.i("dot Positon", etText+"");
Log.i("dot Positon", dotPosition+"");
}
if(cursorPositon <= dotPosition){
Log.i("cursor position", "in left");
String beforeDot = etText.substring(0, dotPosition);
if(beforeDot.length()<beforeDecimal){
return source;
}else{
if(source.toString().equalsIgnoreCase(".")){
return source;
}else{
return "";
}
}
}else{
Log.i("cursor position", "in right");
temp = temp.substring(temp.indexOf(".") + 1);
if (temp.length() > afterDecimal) {
return "";
}
}
}
return super.filter(source, start, end, dest, dstart, dend);
}
} });
edittext.setFilters(新的InputFilter[]{new DigitKeyListener(
Boolean.FALSE,Boolean.TRUE){
小数点前的整数=10,小数点后的整数=2;
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
字符串etText=edittext.getText().toString();
String temp=edittext.getText()+source.toString();
如果(温度等于(“.”){
返回“0”;
}else if(temp.toString().indexOf(“.”)=-1){
//还没有小数点
if(temp.length()>在十进制之前){
返回“”;
}
}否则{
整型点位;
int cursorposition=edittext.getSelectionStart();
如果(etText.indexOf(“.”)=-1){
Log.i(“第一时间点”,etText.toString().indexOf(“.”+“+etText”);
点位置=温度指数(“.”);
Log.i(“点位置”,光标位置+”);
Log.i(“点位置”,etText+);
Log.i(“点位置”,点位置+”);
}否则{
dotPosition=etText.indexOf(“.”);
Log.i(“点位置”,光标位置+”);
Log.i(“点位置”,etText+);
Log.i(“点位置”,点位置+”);
}
如果(光标位置,可以使用
setRawInputType(InputType.InputType.TYPE_NUMBER_FLAG_DECIMAL)
或
针对edittext我测试了这段代码,我可以在点位置之前检查长度,但不能在点位置之后检查长度。我将查看数字格式类:并了解如何使用该类根据使用NumberFormat的.parse方法解析的相同输入验证原始用户输入
setRawInputType(InputType.InputType.TYPE_CLASS_NUMBER)