你如何创建一个只以货币格式输入格式的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()); } }