自定义EditVIew 实现小数点后位数限制等功能
package com.aresoft.gla.common.view;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.EditText;
public class DecimalEditView extends EditText
{
public DecimalEditView(Context context, AttributeSet attrs)
{
super(context, attrs);
setListner();
}
private void setListner()
{
addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (s.toString().contains("."))
{
/**
* 计算小数点后的位数
*/
if ((s.length() - s.toString().indexOf(".") - 1) > 2)
{
s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
DecimalEditView.this.setText(s);
DecimalEditView.this.setSelection(s.length());
}
/**
* 第一位为小数点,自动添加0
*/
if (s.toString().trim().substring(0).equals("."))
{
s = "0" + s;
DecimalEditView.this.setText(s);
DecimalEditView.this.setSelection(s.length());
}
}
/**
* 第一位为0则取第二位
*/
if (s.toString().startsWith("0") && s.toString().trim().length() > 1)
{
if (!s.toString().substring(1, 2).trim().equals("."))
{
s = s.subSequence(1, 2);
DecimalEditView.this.setText(s);
DecimalEditView.this.setSelection(s.length());
return;
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void afterTextChanged(Editable s)
{
}
});
}
}