Este enunciado ha sido evaluado por expertos para que tengas la garantía de la veracidad de nuestra esta noticia.
Solución:
Prueba este ejemplo:
import java.text.DecimalFormat;
import java.text.ParseException;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class NumberTextWatcher implements TextWatcher
private DecimalFormat df;
private DecimalFormat dfnd;
private boolean hasFractionalPart;
private EditText et;
public NumberTextWatcher(EditText et)
df = new DecimalFormat("#,###.##");
df.setDecimalSeparatorAlwaysShown(true);
dfnd = new DecimalFormat("#,###");
this.et = et;
hasFractionalPart = false;
@SuppressWarnings("unused")
private static final String TAG = "NumberTextWatcher";
@Override
public void afterTextChanged(Editable s)
et.removeTextChangedListener(this);
try
int inilen, endlen;
inilen = et.getText().length();
String v = s.toString().replace(String.valueOf(df.getDecimalFormatSymbols().getGroupingSeparator()), "");
Number n = df.parse(v);
int cp = et.getSelectionStart();
if (hasFractionalPart)
et.setText(df.format(n));
else
et.setText(dfnd.format(n));
endlen = et.getText().length();
int sel = (cp + (endlen - inilen));
if (sel > 0 && sel <= et.getText().length())
et.setSelection(sel);
else
// place cursor at the end?
et.setSelection(et.getText().length() - 1);
catch (NumberFormatException nfe)
// do nothing?
catch (ParseException e)
// do nothing?
et.addTextChangedListener(this);
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
if (s.toString().contains(String.valueOf(df.getDecimalFormatSymbols().getDecimalSeparator())))
hasFractionalPart = true;
else
hasFractionalPart = false;
Para usarlo, agregue un TextChangedListener al componente EditText.
editText.addTextChangedListener(new NumberTextWatcher(editText));
Comentarios y puntuaciones del artículo
Más adelante puedes encontrar los informes de otros programadores, tú de igual forma eres capaz dejar el tuyo si lo deseas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)