美文网首页
判断Edittext剩余可输入字符数

判断Edittext剩余可输入字符数

作者: 兣甅 | 来源:发表于2017-09-12 14:37 被阅读8次

    packagecom.aimymusic.android.utils;

    importandroid.text.InputFilter;

    importandroid.text.Spanned;

    /**

    *根据字符判断可输入长度

    */

    public abstract classCharLengthFilterimplementsInputFilter {

    //最大可输入长度

    private intmaxLen=0;

    //超过最大输入长度的提示

    public abstract voidonCharsOverflow();

    //剩余可输入字数的提示

    public abstract voidonRemainNum(intremain);

    publicCharLengthFilter(intmax) {

    maxLen= max;

    }

    //参数source:将要插入的字符串,来自键盘输入、粘贴

    //参数start:source的起始位置,为0(暂时没有发现其它值的情况)

    //参数end:source的长度

    //参数dest:EditText中已经存在的字符串

    //参数dstart:插入点的位置

    //参数dend:插入点的结束位置,一般情况下等于dstart;如果选中一段字符串(这段字符串将会被替换),dstart的值就插入点的结束位置

    publicCharSequence filter(CharSequence source,intstart,intend, Spanned dest,intdstart,intdend) {

    intdindex =0;

    intcount =0;

    intdestCountNum =0;

    //计算已有字符长度

    while(count <=maxLen&& dindex < dest.length()) {

    charc = dest.charAt(dindex++);

    if(c <128) {

    count +=1;

    destCountNum +=1;

    }else{

    count +=2;

    destCountNum +=2;

    }

    }

    if(count >maxLen) {

    onCharsOverflow();

    returndest.subSequence(0, dindex -1);

    }

    intsindex =0;

    //计算需要输入的字符长度

    while(count <=maxLen&& sindex < source.length()) {

    charc = source.charAt(sindex++);

    if(c <128) {

    count +=1;

    }else{

    count +=2;

    }

    }

    //计算需要删除的字符长度

    if(source.length() ==0) {

    for(inti = dstart; i < dend; i++) {

    charc = dest.charAt(i);

    if(c <128) {

    count -=1;

    }else{

    count -=2;

    }

    }

    }

    if(count >maxLen) {

    onCharsOverflow();

    sindex--;

    }

    if(count >=maxLen) {

    intcountNum =0;

    for(inti =0; i < sindex; i++) {

    charc = source.charAt(i);

    if(c <128) {

    countNum +=1;

    }else{

    countNum +=2;

    }

    }

    onRemainNum(maxLen- countNum - destCountNum);

    }else{

    onRemainNum(maxLen- count);

    }

    returnsource.subSequence(0, sindex);

    }

    }

    相关文章

      网友评论

          本文标题:判断Edittext剩余可输入字符数

          本文链接:https://www.haomeiwen.com/subject/uhucsxtx.html