这个是对价格,这个监听器是在别人写的基础上做了优化,只能输入一个点,当时两个的时候输入不进去的,
在主函数里面调取 unitprice = (TextView) findViewById(R.id.unitprice);
setPricePoint(unitprice);
public static void setPricePoint(final TextView editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
boolean zero = s.toString().trim().contains("0.00");
if (zero) {
s = s.toString().subSequence(0, 1);
editText.setText(s);
}
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
s = s.toString().subSequence(0,
s.toString().indexOf(".") + 3);
editText.setText(s);
}
}
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
}
if (s.toString().startsWith("0")
&& s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
return;
}
}
if (dotNum(s.toString()) >= 2) {
s = s.toString().subSequence(0,
s.toString().lastIndexOf("."));
editText.setText(s);
}
}
// .的个数
public int dotNum(String dot) {
int count = 0;
for (int i = 0; i < dot.length(); i++) {
String s = dot.substring(i, i + 1);
if (s.contains("."))
count++;
}
return count;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
输入个数的监听
public static void setPieceNum(final TextView testview) {
testview.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (!isByPiece) {
// if (s.toString().startsWith("0")) {
// s = s.toString().subSequence(0, 1);
// editText.setText(s);
// }
if (s.toString().contains(".")) {
s = s.toString().subSequence(0,
s.toString().length() - 1);
testview.setText(s);
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
里面的不管事testview edittext根据情况自由发挥了