TextWatcher字段校验

想想蛮复杂的,其实具简单点事,关于给EditText增加校验字段,用TextWatcher

commodityPriceEt.addTextChangedListener(new TextWatcher()
{
     private CharSequence temp;
         private int editStart ;
         private int editEnd ;
         private int flag=0;
        boolean zerofirst = false;

@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
Log.e("onTextChanged", "-----------------------");  
         Log.e("onTextChanged", "s:" + s + " start:" + start + " before:"  
                 + before + " count:" + count);  
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
{
Log.e("beforeTextChanged", "-----------------------");  
        Log.e("beforeTextChanged", "s:" + s + " start:" + start + " count:"  
                 + count + " count:" + after); 
temp = s;
}
@Override
public void afterTextChanged(Editable s)
{
String temp = s.toString();
if(temp.equals("0")&&temp.length()==1)
{ zerofirst = true;}
if(temp.length()==2&&temp.charAt(1)=='0'&&zerofirst)
{
s.delete(1, 2);
}
Log.e("After TextChanged", temp); 
if(s.toString().contains("."))
{ int posDot = temp.indexOf(".");
System.out.println(posDot);
Log.e("pos dot---------->", posDot+"");
if (posDot <0)
return;
if(posDot==0)
{
 s.clear();
}
if (temp.length() - posDot - 1 > 1) {
s.delete(posDot + 2, posDot + 3);
}
if(temp.length()-posDot-1 ==1)
{
Log.e("post dot element ---------->",s.charAt(posDot+1)+"");
if(s.charAt(posDot+1)=='0')
s.delete(posDot+1, posDot+2);
}
}

要求价格输入框最多输入1位小数点,且小数点后不能为0

你可能感兴趣的:(TextWatcher字段校验)