내 응용 프로그램에서는 어색한 시나리오가 있습니다.edit 텍스트 텍스트 select-all을 입력 한 다음 첫 번째 문자를 입력하면 표시되지 않습니다.
내 애플리케이션의 가격은 EditText
이며 가격을 입력하면 모든 텍스트가 선택되고 가격을 입력 할 수 있습니다. 사용자가 EditText
을 클릭하면 모든 텍스트가 선택되지만 사용자가 텍스트를 입력하면 첫 번째 숫자는 표시되지 않습니다. 그러면 다른 번호가 올바르게 표시됩니다. TextChangeListner
을 추가하고 알아 내려고했지만 사용자가 첫 번째 문자를 입력하는 동안 CharSequence
을 입력하는 중입니다.
EditText
에 대한 입력 필터가 있습니다. 아래의 editfilter 코드를 확인하십시오.
public static class InputFilterForDoubleMinMax implements InputFilter {
private double min, max;
public InputFilterForDoubleMinMax(double min, double max) {
this.min = min;
this.max = max;
}
public InputFilterForDoubleMinMax(String min, String max) {
this.min = Double.parseDouble(min);
this.max = Double.parseDouble(max);
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
String temp = dest.toString() + source.toString();
if (source.toString().equalsIgnoreCase(".")) {
return "";
} else if (temp.toString().indexOf(",") != -1) {
temp = temp.toString().substring(temp.toString().indexOf(",") + 1);
if (temp.length() > 2) {
return "";
}
}
double input = Double.parseDouble(dest.toString().replace(",", ".").replace("€", "") + source.toString().replace(",", ".").replace("€", ""));
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) {
}
return "";
}
private boolean isInRange(double a, double b, double c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
도움을 주시면 감사하겠습니다.
확인 업데이트 된 질문. –
'inputType = "numberDecimal"을 사용하면 범위 필터 만 사용하여 필터링해야합니다. –
Doing samething –