在我正在编写的应用程序中,我遇到了一个带有指定 InputFilter 的 EditText 的非常奇怪的问题。这个想法是,有一个 EditText,它只接受十进制数字作为输入,根据用户的区域设置,最多有两个小数位和一个小数分隔符。这是相关的代码片段
我的布局中的 EditText
<EditText
android:id="@+id/value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="01234567890,."
android:inputType="number|numberDecimal"
android:nextFocusForward="@+id/category" >
Run Code Online (Sandbox Code Playgroud)
输入过滤器实现
public class MoneyFilter implements InputFilter {
private String testRegex;
public MoneyFilter(String decimalSep) {
testRegex = "^\\d+\\" + decimalSep + "?\\d{0,2}$";
}
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
String s = source.toString();
String d = dest.toString();
String r = d.substring(0, dstart) + s.substring(start, end)
+ d.substring(dend);
if (r.matches(testRegex)) {
return null;
} else { …Run Code Online (Sandbox Code Playgroud)