Android 输入框限制字符输入数

import android.content.Context;import android.content.res.TypedArray;import android.telephony.SmsMessage;import android.text.Editable;import android.text.InputFilter;import android.text.TextWatcher;import android.util.AttributeSet;import android.widget.EditText;import us.pinguo.cc.R;/** * Created by crab on 15-3-18. */public class LimitNumEditText extends EditText {private int mMaxLength;private OnTextCountChangeListener mTextCountChangeListener;public LimitNumEditText(Context context) {this(context, null);}public LimitNumEditText(Context context, AttributeSet attrs) {super(context, attrs);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.LimitNumEditText);mMaxLength = typedArray.getInt(R.styleable.LimitNumEditText_maxLength, -1);typedArray.recycle();if (mMaxLength >= 0) {setFilters(new InputFilter[]{new InputFilter.LengthFilter(mMaxLength)});} else {setFilters(new InputFilter[0]);}addTextChangedListener(null);}/*** @return 返回限制输入的最大字符数量*/public int getLimitLength(){return mMaxLength;}@Overridepublic void addTextChangedListener(final TextWatcher watcher) {TextWatcher inner=new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {if(watcher!=null){watcher.beforeTextChanged(s,start,count,after);}}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {int[] params= SmsMessage.calculateLength(s,false);int use=params[1];if(mMaxLength>=0 && mTextCountChangeListener!=null){mTextCountChangeListener.onTextCountChange(use,mMaxLength);}if(watcher!=null){watcher.onTextChanged(s,start,before,count);}}@Overridepublic void afterTextChanged(Editable s) {if(watcher!=null){watcher.afterTextChanged(s);}}};super.addTextChangedListener(inner);}public LimitNumEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public void setOnTextCountChangeListener(OnTextCountChangeListener listener){mTextCountChangeListener=listener;}/*** 监听输入框字符变化*/public interface OnTextCountChangeListener{/**** @param use 输入字符赞据的大小* @param total 限制输入数量的上线*/public void onTextCountChange(int use, int total);}2.修改res/values/attrs.xml文件,,增加如下行

鸟儿爱美,不仅需要羽毛之美,还需要鸣声婉转之美;

Android 输入框限制字符输入数

相关文章:

你感兴趣的文章:

标签云: