Kotlin EditText 限制输入16进制
原创
©著作权归作者所有:来自51CTO博客作者董国森的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、xml中定义控件
<EditText
android:id="@+id/et_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:paddingHorizontal="20dp"
android:layout_marginStart="@dimen/func_margin_left"
android:layout_marginEnd="@dimen/func_margin_left"/>
2、新建类继承 InputFilter 类,定义规则
class HexInputFilter : InputFilter {
override fun filter(
source: CharSequence,
start: Int,
end: Int,
dest: Spanned?,
dstart: Int,
dend: Int,
): CharSequence? {
val hexChars = "0123456789ABCDEFabcdef"
for (i in source.indices) {
if (!hexChars.contains(source[i])) {
return ""
}
}
return null
}
}
3、使用方法
val et_value = itemView.findViewById<EditText>(R.id.et_value)
et_value.filters += HexInputFilter()
et_value.hint = "请输入16进制字符"
4、扩展
// String 转化 16进制的Int类型
var str = "ff"
str.toInt(radix = 16)
// 16进制的Int 转化 String 类型
var value = 84
Integer.toHexString(value).toString()