android_Edittext 两位小数输入,可用于价格计算器
来源:互联网 发布:网游客户端编程 编辑:程序博客网 时间:2024/09/21 09:04
package com.example.mathedittextdemo;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;
/**
* @author wilin
*/
public class MainActivity extends Activity implements TextWatcher {
private EditText editText;
private int index = 0; // 输入内容前的下标
private boolean isSettext = false;
private int time = 0; // time 标识输入字符数,用来判断长度是否超过0.00的长度,即4 = 3+1
private String originString; // 输入前的字符串,判断是输入还是删除
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
editText.setText("0.00");
editText.setSelection(4);
editText.addTextChangedListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
index = editText.getSelectionEnd();
originString = new String(s.toString());
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!isSettext) {// 为使在setText的时候不重复调用
if (s.length() > originString.length()) {// 输入数字
String newString = new String(s.toString());
newString = newString.replace(".", "");
if (time < 3 && index == newString.length() && newString.startsWith("0")) {
newString = newString.substring(1, newString.length());
}
String a = String.valueOf(Long.valueOf(newString.substring(0, newString.length() - 2))); // 整数部分
StringBuilder sb = new StringBuilder(a);
sb.append(".").append(newString.subSequence(newString.length() - 2,newString.length())); // 小数部分
String tmp = sb.toString();
isSettext = true;
editText.setText(tmp);// 更新数字
editText.setSelection(tmp.length());
time++;
} else { // 删除数字
if (time != 0) {
String newString = new String(s.toString());
newString = newString.replace(".", "");
if (newString.length() < 3)//如果没有整数部分,整数部分置0
newString = "0".concat(newString);
StringBuilder sb = new StringBuilder(newString.substring(0, newString.length() - 2)).append(".")
.append(newString.subSequence(newString.length() - 2,newString.length()));
String tmp = sb.toString();
isSettext = true;
editText.setText(tmp);
editText.setSelection(tmp.length());
time--;
} else { // 删除掉所有输入
isSettext = true;
editText.setText("0.00");
// index = 4;
editText.setSelection(4);
}
}
} else {
isSettext = false;
editText.setSelection(s.length());
}
}
@Override
public void afterTextChanged(Editable s) {
}
}
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;
/**
* @author wilin
*/
public class MainActivity extends Activity implements TextWatcher {
private EditText editText;
private int index = 0; // 输入内容前的下标
private boolean isSettext = false;
private int time = 0; // time 标识输入字符数,用来判断长度是否超过0.00的长度,即4 = 3+1
private String originString; // 输入前的字符串,判断是输入还是删除
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edittext);
editText.setText("0.00");
editText.setSelection(4);
editText.addTextChangedListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
index = editText.getSelectionEnd();
originString = new String(s.toString());
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!isSettext) {// 为使在setText的时候不重复调用
if (s.length() > originString.length()) {// 输入数字
String newString = new String(s.toString());
newString = newString.replace(".", "");
if (time < 3 && index == newString.length() && newString.startsWith("0")) {
newString = newString.substring(1, newString.length());
}
String a = String.valueOf(Long.valueOf(newString.substring(0, newString.length() - 2))); // 整数部分
StringBuilder sb = new StringBuilder(a);
sb.append(".").append(newString.subSequence(newString.length() - 2,newString.length())); // 小数部分
String tmp = sb.toString();
isSettext = true;
editText.setText(tmp);// 更新数字
editText.setSelection(tmp.length());
time++;
} else { // 删除数字
if (time != 0) {
String newString = new String(s.toString());
newString = newString.replace(".", "");
if (newString.length() < 3)//如果没有整数部分,整数部分置0
newString = "0".concat(newString);
StringBuilder sb = new StringBuilder(newString.substring(0, newString.length() - 2)).append(".")
.append(newString.subSequence(newString.length() - 2,newString.length()));
String tmp = sb.toString();
isSettext = true;
editText.setText(tmp);
editText.setSelection(tmp.length());
time--;
} else { // 删除掉所有输入
isSettext = true;
editText.setText("0.00");
// index = 4;
editText.setSelection(4);
}
}
} else {
isSettext = false;
editText.setSelection(s.length());
}
}
@Override
public void afterTextChanged(Editable s) {
}
}
0 0
- android_Edittext 两位小数输入,可用于价格计算器
- edittext 在输入价格时限定输入的位数不大于1000000且可以输入两位小数,第一位不能输入.
- PHP_保留两位小数并且四舍五入(可用于精度计算)_保留两位小数并且不四舍五入,
- JS 格式化价格保留两位小数
- 文本框输入--只能输入两位小数
- 输入框限制输入两位小数
- js 计算价格后保留两位小数
- PHP数字价格格式化,保留两位小数
- PHP数字价格格式化,保留两位小数
- iOS限制textfield输入两位小数
- 数字输入处理 , 保留两位小数
- EditText里面输入两位小数
- EditText限制输入两位小数
- 限制 EditText 最多输入两位小数
- 限制textField输入两位小数
- Android EditText限制输入两位小数
- Android-EditText两种方法限制输入两位小数
- UITextField输入框 只能输入两位小数
- Chrome拓展插件篇
- freemarker常见的一些用法(一)
- 安装CDH5.7.1集群
- easyui data-options的使用以及避免重复提交
- OpenStack 通用技术有哪些
- android_Edittext 两位小数输入,可用于价格计算器
- 修改线程上下文注入DLL
- 主机连不上虚拟机数据库
- win7活动窗口不能显示到最前端
- Wikioi 1138 聪明的质检员
- Python初级学习笔记
- Hibernate总结(转载)
- Java中的static与final关键字的作用
- [MFC]如何让窗口全屏