Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android EditText中文本更改时自动添加千位分隔符大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_607_1@
我想要完成同样的任务有很多答案,甚至在我的案例中找不到任何有用的解决方

我见过

Question 1 – 问题在于添加逗号计数“.” (DOT)也作为数值.

Question 2 – 问题是它在文本被更改时没有显示它的结果

Question 3 – 问题是它在第15个字母后连续添加0.

还有更多问题和答案,

但是我找不到任何符合千分离器一般要求的东西.

是否有任何有用的提示可以帮助我顺利添加千位分隔符,因为文本已更改并且处理方式不同
小数点后的数字如计算器?

我会感激任何帮助.

解决方法

我遇到了同样的问题,并为完成任务进行了大量研究以获得正确的结果.所以我终于解决了我们正在搜索的问题,并且我正在为您提供我的代码,这些代码将帮助您过多并满足您的要求.

可以直接在我们自己的类中复制我的代码,它是完全经过测试的

以下代码的详细说明

>在EditText中将千位分隔符作为文本更改.
>在按下句点(.)时自动添加0.在第一位.
>在Beginning处忽略0输入.

类名:numberTextWatcherForThousand实现TextWatcher

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import java.util.StringTokenizer;

/**
 * Created by Shreekrishna on 12/14/2014.
 */
public class numberTextWatcherForThousand implements TextWatcher {

    EditText editText;


    public numberTextWatcherForThousand(EditText editText) {
        this.editText = editText;


    }

    @Override
    public void beforeTextChanged(CharSequence s,int start,int count,int after) {

    }

    @Override
    public void ontextChanged(CharSequence s,int before,int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        try
        {
            editText.removeTextChangedListener(this);
            String value = editText.getText().toString();


            if (value != null && !value.equals(""))
            {

                if(value.startsWith(".")){
                    editText.setText("0.");
                }
                if(value.startsWith("0") && !value.startsWith("0.")){
                    editText.setText("");

                }


                String str = editText.getText().toString().replaceAll(",","");
                if (!value.equals(""))
                editText.setText(get@R_618_6221@lFormattedString(str));
                editText.setSELEction(editText.getText().toString().length());
            }
            editText.addTextChangedListener(this);
            return;
        }
        catch (Exception eX)
        {
            ex.printStackTrace();
            editText.addTextChangedListener(this);
        }

    }

    public static String get@R_618_6221@lFormattedString(String value)
    {
        StringTokenizer lst = new StringTokenizer(value,".");
        String str1 = value;
        String str2 = "";
        if (lst.countTokens() > 1)
        {
            str1 = lst.nextToken();
            str2 = lst.nextToken();
        }
        String str3 = "";
        int i = 0;
        int j = -1 + str1.length();
        if (str1.charAt( -1 + str1.length()) == '.')
        {
            j--;
            str3 = ".";
        }
        for (int k = j;; k--)
        {
            if (k < 0)
            {
                if (str2.length() > 0)
                    str3 = str3 + "." + str2;
                return str3;
            }
            if (i == 3)
            {
                str3 = "," + str3;
                i = 0;
            }
            str3 = str1.charAt(k) + str3;
            i++;
        }

    }

    public static String trimCommaOfString(String String) {
//        String returnString;
        if(String.contains(",")){
            return String.replace(","");}
        else {
            return String;
        }

    }
}

在EditText上使用此类,如下所示

editText.addTextChangedListener(new numberTextWatcherForThousand(editText));

将输入作为纯文本输入为Double

像这样使用同一个类的trimCommaOfString方法

numberTextWatcherForThousand.trimCommaOfString(editText.getText().toString());

大佬总结

以上是大佬教程为你收集整理的Android EditText中文本更改时自动添加千位分隔符全部内容,希望文章能够帮你解决Android EditText中文本更改时自动添加千位分隔符所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。