欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发限制edittext只能输入小数点后两位数,小数点前8位(代码实现)

程序员文章站 2022-10-16 15:51:09
android开发限制edittext只能输入小数点后两位数,小数点前8位(代码实现) /** * 限制edittext只能输入小数点后两位数,小数点前8位 */ public sta...

android开发限制edittext只能输入小数点后两位数,小数点前8位(代码实现)

/**
 * 限制edittext只能输入小数点后两位数,小数点前8位
 */
public static void setpricepoint(final edittext edittext) {
 edittext.addtextchangedlistener(new textwatcher() {

  @override
  public void ontextchanged(charsequence s, int start, int before,
 int count) {

if (s.tostring().contains(".")) {
 if (s.length() - 1 - s.tostring().indexof(".") > 2) {
  s = s.tostring().subsequence(0,
 s.tostring().indexof(".") + 3);
  edittext.settext(s);
  edittext.setselection(s.length());
 }
} else {
 if (s.length() > 8) {
  edittext.settext(s.subsequence(0, 8));
  edittext.setselection(s.length() - 1);
 }
}

if (s.tostring().trim().substring(0).equals(".")) {
 s = "0" + s;
 edittext.settext(s);
 edittext.setselection(2);
}

if (s.tostring().startswith("0")
  && s.tostring().trim().length() > 1) {
 if (!s.tostring().substring(1, 2).equals(".")) {
  edittext.settext(s.subsequence(0, 1));
  edittext.setselection(1);
  return;
 }
}
  }

  @override
  public void beforetextchanged(charsequence s, int start, int count,
  int after) {

  }

  @override
  public void aftertextchanged(editable s) {
// todo auto-generated method stub

  }

 });
}