最近项目上用到一个金额输入的功能,基本功能包括可以输入小数,然后小数位数限制为2位。
我用自定义的EditText实现了这个功能
思路:写一个类继承EditText,然后在构造方法中设置OnTextChangeLisener,如果输入的文字包含小数点,且小数位大于2,则在输入完后,删除掉最后一位
代码如下:
/**
* 金额输入框,限制小数位为2位
*
* @author xianglongzhou
*
*/
public class MoneyEditText extends EditText {
private static final String TAG = "MoneyEditText";
private boolean textChange;
public MoneyEditText(Context context) {
this(context, null);
}
public MoneyEditText(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MoneyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//设置可以输入小数
setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
setFocusable(true);
setFocusableInTouchMode(true);
//监听文字变化
addTextChangedListener(new TextWatcher() {
@