功能较少,直接看代码:

import android.text.InputFilterimport android.text.Spanned/** * @author: Sid * @email: 1157903494@qq.com * @date: 2018/5/31 17:18 */class ChineseLengthFilter(val length: Int) : InputFilter {    override fun filter(source: CharSequence, start: Int, end: Int, dest: Spanned, dstart: Int, dend: Int): CharSequence {        var len = calculateLength(dest)        val builder = StringBuilder()        if (len >= length) {            return ""        } else {            for (c in source) {                if (isChineseChar(c)) {                    len += 2                } else {                    len++                }                builder.append(c)                if (len >= length) {                    break                }            }        }        return builder.toString().trim()    }    private fun isChineseChar(c: Char): Boolean {        val ub = Character.UnicodeBlock.of(c)        return (ub === Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS                || ub === Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS                || ub === Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A                || ub === Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B                || ub === Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION                || ub === Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS                || ub === Character.UnicodeBlock.GENERAL_PUNCTUATION)    }    private fun calculateLength(source: Spanned): Int {        var len = 0        for (c in source) {            if (isChineseChar(c)) {                len += 2            } else {                len++            }        }        return len    }}

更多相关文章

  1. Flutter 混合开发 - 02 百度地图定位功能 android 篇
  2. Android 退出提示框 代码
  3. Android 调用系统自带的分享功能
  4. 我的Android进阶之旅------>android api的源代码下载地址
  5. 我的Android进阶之旅------>Android利用Sensor实现指南针功能
  6. Android 使用 ToneGenerator 编写按键发声功能
  7. android中listview的长按删除多选功能实现
  8. 简单几段代码实现窗口抖动
  9. 史上最全!最经典!最无私的Android资料(书籍+代码)分享-不要积分(求置

随机推荐

  1. Handler、HandlerThread理解
  2. android 入门xml布局文件--转
  3. Android(安卓)View如何获取焦点
  4. shape画listview分割线
  5. Fragment、Activity比较——Android碎片
  6. Android(安卓)中ListView setOnItemClick
  7. android之知识点小结一
  8. Android布局属性详解
  9. 2013.08.15——— android Fragment的简
  10. 让EditView只能输入电话号码 同时还是密