要让Android中的EditText始终保留两位小数,可以通过以下步骤实现:
以下是一个示例代码:
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class DecimalTextWatcher implements TextWatcher {
private EditText editText;
public DecimalTextWatcher(EditText editText) {
this.editText = editText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// 获取EditText中的文本
String input = s.toString();
// 移除之前的TextWatcher,避免循环调用
editText.removeTextChangedListener(this);
// 处理文本,保留两位小数
String formattedText = formatDecimal(input);
// 设置处理后的文本回EditText中
editText.setText(formattedText);
// 将光标移动到文本末尾
editText.setSelection(formattedText.length());
// 重新添加TextWatcher
editText.addTextChangedListener(this);
}
@Override
public void afterTextChanged(Editable s) {
}
private String formatDecimal(String input) {
// 使用正则表达式将文本转换为保留两位小数的格式
// 这里仅作示例,实际应根据需求进行处理
// 注意:这里没有处理用户输入非法字符的情况,如字母等
if (input.isEmpty()) {
return "";
} else {
double value = Double.parseDouble(input);
return String.format("%.2f", value);
}
}
}
使用示例:
EditText editText = findViewById(R.id.editText);
editText.addTextChangedListener(new DecimalTextWatcher(editText));
这样,无论用户输入什么值,EditText都会自动保留两位小数。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云