Android 末尾始终保持00.00的EditText
来源:互联网 发布:知乎 离火得花 编辑:程序博客网 时间:2024/06/05 09:24
产品要求变态的输入框:输入金额末尾始终保持00.00,比如用户输入1,其输出结果为100.00
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="50dp" android:inputType="numberDecimal" android:minEms="0"/>
package com.example.test;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.widget.EditText;public class MainActivity extends AppCompatActivity { private static String mSuffixStr = "00.00"; private boolean mIsFirstEdit = false; private String beforeStr = ""; private String lastStr = ""; private String endStr = ""; private EditText inputNumEt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inputNumEt = (EditText) findViewById(R.id.editText); inputNumEt.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { beforeStr = s.toString().trim(); } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String sStr = s.toString().trim(); if (TextUtils.isEmpty(sStr)) { return; } else { if (!mIsFirstEdit) { mIsFirstEdit = true; if (beforeStr.contains(mSuffixStr)) { lastStr = beforeStr.replace(mSuffixStr, ""); } else { lastStr = beforeStr; } } if (sStr.contains(mSuffixStr)) { String sp = sStr.replace(mSuffixStr, ""); if (!sp.equals("")) { boolean b = sp.matches("[^1-9]+"); if (b) { inputNumEt.setText(mSuffixStr); return; } } } if (sStr.equals("0") && count == 1) { endStr = null; inputNumEt.setText(""); return; } if (sStr.equals(".") && count == 1) { endStr = null; inputNumEt.setText(""); return; } if (sStr.equals("")) { endStr = null; inputNumEt.setText(mSuffixStr); return; } if (endStr != null && (beforeStr + mSuffixStr).equals(endStr)) { return; } else { if (sStr.equals(beforeStr)) { return; } if (sStr.length() < beforeStr.length()) { //delete// for (int i = 0; i < sStr.length(); i++) {// if (beforeStr.contains(sStr.charAt(i) + "")) {// if ((sStr.charAt(i) + "").equals(".")) {// beforeStr = beforeStr.replaceFirst("\\" + sStr.charAt(i) + "", "");// } else {// beforeStr = beforeStr.replaceFirst(sStr.charAt(i) + "", "");// }// }// }// StringBuffer stringBuffer = new StringBuffer(lastStr);// String revStr = stringBuffer.reverse().toString();//// if (sStr.contains(mSuffixStr) && beforeStr.equals("0")) {// sStr = new StringBuffer(revStr.replaceFirst(beforeStr, "")).reverse().toString();// }else if (!sStr.contains(mSuffixStr) && (beforeStr.equals("0") || beforeStr.equals("."))){// if(lastStr.length() - 1 >= 0) {// sStr = lastStr.substring(0,lastStr.length() - 1);// }// } if(lastStr.length() - 1 >= 0) { sStr = lastStr.substring(0,lastStr.length() - 1); } } else { //input String ls = lastStr + mSuffixStr; for (int i = 0; i < ls.length(); i++) { if (sStr.contains(ls.charAt(i) + "")) { if ((ls.charAt(i) + "").equals(".")) { sStr = sStr.replaceFirst("\\" + ls.charAt(i) + "", ""); } else { sStr = sStr.replaceFirst(ls.charAt(i) + "", ""); } } } if (sStr.equals("") || sStr.equals(".")) { return; } sStr = lastStr + sStr; } if (sStr.contains(mSuffixStr)) { lastStr = sStr.replace(mSuffixStr, ""); } else { lastStr = sStr; } endStr = lastStr + mSuffixStr; inputNumEt.setText(endStr); inputNumEt.setSelection(lastStr.length()); } } } @Override public void afterTextChanged(Editable s) { } }); }}
0 0
- Android 末尾始终保持00.00的EditText
- [android小技巧]如何让光标处于EditText的末尾
- EditText的光标放到末尾
- Android EditText光标移动到文本框末尾
- Android EditText光标移动到文本框末尾
- Android EditText光标移动到文本框末尾
- 如何让光标处于EditText的末尾
- Android 将EditText光标移动到字符串末尾
- andrioid EditText 光标设置为文本的末尾
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- 设置Android设备在睡眠期间始终保持WLAN开启的代码实现
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- 如何从后台开启android蓝牙的可见性以及始终保持可见性
- EditText焦点一直在末尾!
- EditText末尾添加删除按钮
- EditText光标放在末尾
- android edittext的属性
- leveldb代码阅读(2)——一些简单的概念
- Play Ebean数据库操作“或”查询
- 鸟瞰图实现代码--opencv
- Red Hat Enterprise Linux Server6.5使用CentOS yum源更新的方法
- Xcode报错: OS version lower than deployment target
- Android 末尾始终保持00.00的EditText
- JAVA学习14_Joda-Time 简介
- Linux查看CPU和内存使用情况
- iPhone忘记密码的找回
- Android之DatePickerDialog用法(日历的用法)
- haproxy 4层负载
- Requesting JavaScript AST from selection
- Android 6.0 新特性之 RunTime Permissions
- Linux查看文件编码格式及文件编码转换