本文介绍了如何与千位分隔符(,)在Android中打字的时候格式化的EditText的输入?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个的EditText ,它只是没有十进制数得到的数值。

 的android:inputType下=数字

我想在我打字分隔千。例如25000人。

我知道我应该使用 TextWatcher 键,我用这个code,但我不能让它工作:

  @覆盖
        公共无效afterTextChanged(编辑viewss){
            字符串s = NULL;
            尝试{
                //格式说明逗号的伎俩
                S =的String.format(%,D,的Long.parseLong(viewss.toString()));
            }赶上(NumberFormatException的E){
            }        }

您能帮我做到这一点?


解决方案

测试这个例子:

 进口java.text.DecimalFormat中;
进口java.text.ParseException;进口android.text.Editable;
进口android.text.TextWatcher;
进口android.widget.EditText;公共类NumberTextWatcher实现TextWatcher {    私人DecimalFormat的DF;
    私人DecimalFormat的dfnd;
    私人布尔hasFractionalPart;    私人的EditText等;    公共NumberTextWatcher(的EditText等)
    {
        DF =新的DecimalFormat(#,###。##。);
        df.setDecimalSeparatorAlwaysShown(真);
        dfnd =新的DecimalFormat(####);
        this.et =等;
        hasFractionalPart = FALSE;
    }    @燮pressWarnings(未使用)
    私有静态最后弦乐TAG =NumberTextWatcher;    @覆盖
    公共无效afterTextChanged(编辑S)
    {
        et.removeTextChangedListener(本);        尝试{
            INT inilen,endlen;
            。inilen = et.getText()长();            串V = s.toString()取代(将String.valueOf(df.getDecimalFormatSymbols()getGroupingSeparator()),);
            数n = df.parse(V);
            INT CP = et.getSelectionStart();
            如果(hasFractionalPart){
                et.setText(df.format(正));
            }其他{
                et.setText(dfnd.format(正));
            }
            。endlen = et.getText()长();
            INT SEL =(CP +(endlen - inilen));
            如果(SEL大于0&放大器;&放大器; SEL&下; = et.getText()长度()){
                et.setSelection(SEL);
            }其他{
                //把光标在结束了吗?
                et.setSelection(et.getText()长() - 1);
            }
        }赶上(NumberFormatException的NFE){
            // 没做什么?
        }赶上(ParseException的E){
            // 没做什么?
        }        et.addTextChangedListener(本);
    }    @覆盖
    公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数后INT)
    {
    }    @覆盖
    公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数)
    {
        如果(s.toString()。包含(将String.valueOf(df.getDecimalFormatSymbols()。getDecimalSeparator())))
        {
            hasFractionalPart = TRUE;
        }其他{
            hasFractionalPart = FALSE;
        }
    }}

editText.addTextChangedListener(new NumberTextWatcher(editText));

这篇关于如何与千位分隔符(,)在Android中打字的时候格式化的EditText的输入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 15:47