金额输入不需要小数点

<EditText
android:id="@+id/edit_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:numeric="decimal" />
...

2、第二步在Activity里面找到editText然后监听他的文本输入。


editText = (EditText) findViewById(R.id.edit_main);
editText.addTextChangedListener(new TextWatcher() {
private String numberStr; //定义一个字符串来得到处理后的金额
@Override
public void beforeTextChanged(CharSequence s, int start, int
count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int lenght = s.length();
Log.e("Sun", s + "====" + start + "=======" + before + "======" + count);
double number = 0.00; //初始金额
//第一次输入初始化 金额值
if (lenght <= 1){
number = Double.parseDouble(s.toString());
number =number /100;//第一次 长度等于
numberStr = number + "";
}else {
//之后的输入带入算法后将值设置给 金额值
if (s.toString().contains(".")){
numberStr = getMoneyString(s.toString()); //这个方法看第三步
}
}
}
@Override
public void afterTextChanged(Editable s) {
String aa = editText.getText().toString();
Toast.makeText(MainActivity.this, aa + "*****" + numberStr, Toast.LENGTH_SHORT).show();
//在此判断输入框的值是否等于金额的值,如果不相同则赋值,如果不判断监听器将会出现死循环
if (!TextUtils.isEmpty(editText.getText().toString()) &;&; !editText.getText().toString().equals(numberStr)){
Toast.makeText(MainActivity.this,numberStr+"*****",Toast.LENGTH_SHORT).show();
editText.setText(numberStr); //赋值到editText上
editText.setSelection(numberStr.length()); //将光标定位到结尾
}
}
});

3、第三步写一个 处理金额的方法,就是重点方法☆☆☆☆☆



//定义一个处理字符串的方法
private String getMoneyString(String money){
String overMoney = "";//结果
String[] pointBoth = money.split("//.");//分隔点前点后
String beginOne = pointBoth[0].substring(pointBoth[0].length()-1);//前一位
String endOne = pointBoth[1].substring(0, 1);//后一位
//小数点前一位前面的字符串,小数点后一位后面
String beginPoint = pointBoth[0].substring(0,pointBoth[0].length()-1);
String endPoint = pointBoth[1].substring(1);
Log.e("Sun", pointBoth[0]+"==="+pointBoth[1] + "====" + beginOne + "=======" + endOne+"===>"+beginPoint+"=="+endPoint );
//根据输入输出拼点
if (pointBoth[1].length()>2){//说明输入,小数点要往右移
overMoney= pointBoth[0]+endOne+"."+endPoint;//拼接实现右移动
}else if (
pointBoth[1].length()<2){//说明回退,小数点左移
overMoney = beginPoint+"."+beginOne+pointBoth[1];//拼接实现左移
}else {
overMoney = money;
}
//去除点前面的0 或者补 0
String overLeft = overMoney.substring(0,overMoney.indexOf("."));//得到前面的字符串
Log.e("Sun","左边:"+overLeft+"===去零前"+overMoney);
if (overLeft ==null || overLeft == ""||overLeft.length()<1){//如果没有就补零
overMoney = "0"+overMoney;
}else if(overLeft.length() > 1 &;&; "0".equals(overLeft.subSequence(0, 1))){//如果前面有俩个零
overMoney = overMoney.substring(1);//去第一个0
}
Log.e("Sun","结果:"+overMoney);
return overMoney;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值