Android货币输入与固定的十进制

你如何创建一个只以货币格式输入格式的edittext条目?当用户输入5时,我希望输入看起来像“$0.05”,当它们输入3时,输入​​现在应该看起来像“$0.53”,最后输入6,输入应该是“$5.36”.

解决方法

ninjasense的完整解决方案基本上有效,但它有一些问题:

>每当在“onTextChanged”处理程序中更改字段的数据时,光标位置将重置为字段上的索引0,这在输入货币值时有点恼人.
>它使用浮点数来格式化货币价值,这可以反击.

对于第一个问题,我还没有解决方案,对于第二个这样的代码

@Override
    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]","");
            StringBuilder cashAmountBuilder = new StringBuilder(userInput);

            while (cashAmountBuilder.length() > 3 && cashAmountBuilder.charat(0) == '0') {
                cashAmountBuilder.deleteCharat(0);
            }
            while (cashAmountBuilder.length() < 3) {
                cashAmountBuilder.insert(0,'0');
            }
            cashAmountBuilder.insert(cashAmountBuilder.length()-2,'.');
            cashAmountBuilder.insert(0,'$');

            cashAmountEdit.setText(cashAmountBuilder.toString());
        }

    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...