All- Я боролся с этим некоторое время и рассмотрел все другие вопросы об этом, но я просто не могу понять: у меня есть поле edttext, которое нужно отформатировать для валюты. Я пробовал код во всех других вопросах, касающихся этого, но независимо от того, что я пробовал, он просто не работает. Вот мой код:
EditText text = (EditText)findViewById(R.id.edit_bill);
text.setRawInputType(Configuration.KEYBOARD_12KEY);
text.addTextChangedListener(new TextWatcher(){
EditText text = (EditText)findViewById(R.id.edit_bill);
DecimalFormat dec = new DecimalFormat("0.00");
public void afterTextChanged(Editable arg0) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
if(!s.toString().matches("^\\$(\\d{1,3}(\\,\\d{3})*|(\\d+))(\\.\\d{2})?$"))
{
String userInput= ""+s.toString().replaceAll("[^\\d]", "");
if (userInput.length() > 0) {
Float in=Float.parseFloat(userInput);
float percen = in/100;
text.setText("$"+dec.format(percen));
text.setSelection(text.getText().length());
}
}
}
});
Этот код находится внутри метода onClick. Это имеет значение (например, текст будет отформатирован только тогда, когда пользователь нажимает кнопку)?. Заранее спасибо!
Я использовал этот метод в прошлом для форматирования денег.
static public String customFormat(String pattern, double s ) {
DecimalFormat myFormatter = new DecimalFormat(pattern);
String stringFormatOutput = myFormatter.format(s);
return stringFormatOutput;
}
его можно использовать следующим образом:
String strPrice = customFormat("$###,##0.00", 300.2568);
mTxt.setText(strPrice);
просто измените "300.2568", чтобы быть вашей ценой. Вероятно, это может работать так же, как и для плавающих, а не для парных.
onTextChanged
не работает так. Вы не можете изменить текст вonTextChanged
.