Android EditText,在numberDecimal输入类型的情况下显示逗号和点作为可能的分隔符

XZe*_*Zen 7 android

当输入十进制数时,我需要让用户在两种变体之间进行选择:

使用逗号(,)作为分隔符

使用点(.)作为分隔符

默认情况下,如果我inputType="numberDecimal"EditTextxml配置中使用 - EditText仅显示数字和逗号(,)作为可能的分隔符.

我尝试使用android:digits="0123456789,在我的EditText配置中,但没有结果 - EditText小部件只显示数字和逗号.

我想在屏幕键盘上尝试输入十进制数时,可以为用户提供两种变体(.,).

您能否提一些建议?

sco*_*ttt 14

同时指定android:inputType="numberDecimal",并android:digits="0123456789,."会显示与大多只是数字和标点符号(根据用户选择的键盘)键盘.它还会将接受的字符限制为数字属性中的字符.

如果您想进一步限制键盘以仅显示某些字符,则需要定义自定义字符.这是关于这方面的更好的教程之一.

  • 我已经尝试过inputType和android:digits,但结果并不是我想要的.似乎没有选择,我需要创建自定义键盘,感谢链接 (2认同)

Ama*_*jay 1

使用正确的验证。让用户看到完整的键盘,但他仍然不使用它。意味着用户不应该能够使用键盘使用或输入任何内容。

 etlocation = (EditText) findViewById(R.id.etlocation);
Run Code Online (Sandbox Code Playgroud)

并用了这个

 etlocation.getText().toString();

 if (!isValidLocation(etlocation.getText().toString().trim()))
 {
 etlocation.setError("Invalid location");
 }
Run Code Online (Sandbox Code Playgroud)

验证这一点

 public static boolean isValidLocation(String str) {
    boolean isValid = false;
    String expression = "^[0-9,.]*$";
    CharSequence inputStr = str;
    Pattern pattern = Pattern.compile(expression);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches()) {
        isValid = true;
    }
    return isValid;
}
Run Code Online (Sandbox Code Playgroud)

  • isValidLocation 失败并显示“,.,.,.,.,.,”,它表示这是一个有效的数字 (2认同)