Android限制输入框10个汉字或20个字母
16lz
2021-01-23
功能较少,直接看代码:
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 }}
更多相关文章
- Flutter 混合开发 - 02 百度地图定位功能 android 篇
- Android 退出提示框 代码
- Android 调用系统自带的分享功能
- 我的Android进阶之旅------>android api的源代码下载地址
- 我的Android进阶之旅------>Android利用Sensor实现指南针功能
- Android 使用 ToneGenerator 编写按键发声功能
- android中listview的长按删除多选功能实现
- 简单几段代码实现窗口抖动
- 史上最全!最经典!最无私的Android资料(书籍+代码)分享-不要积分(求置