Android 自定义输入金额
时间: 2023-11-10 13:05:36 浏览: 139
实现自定义输入金额可以使用 EditText 控件,并对其进行限制和格式化。以下是一个简单的实现方法:
1. 在 XML 文件中添加 EditText 控件,并设置输入类型为数字和小数点:
```xml
<EditText
android:id="@+id/editTextAmount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:digits="0123456789." />
```
2. 在 Java 代码中获取 EditText 控件,并添加 TextWatcher 监听器来限制输入内容和格式化金额:
```java
EditText editTextAmount = findViewById(R.id.editTextAmount);
editTextAmount.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String amount = s.toString();
// 限制小数点后只能有两位
if (amount.contains(".")) {
if (amount.length() - amount.indexOf(".") > 3) {
s.replace(s.length() - 1, s.length(), "");
}
}
// 限制金额最大值为 9999.99
if (Double.parseDouble(amount) > 9999.99) {
s.replace(s.length() - 1, s.length(), "");
}
// 格式化金额,每三位加一个逗号
if (amount.length() > 0) {
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00");
String formattedAmount = decimalFormat.format(Double.parseDouble(amount));
if (!amount.equals(formattedAmount)) {
s.replace(0, s.length(), formattedAmount);
}
}
}
});
```
这样就可以实现自定义输入金额并格式化显示。注意要处理一些异常情况,例如输入非法字符和超出最大值等。
阅读全文