0
点赞
收藏
分享

微信扫一扫

Kotlin EditText 限制输入16进制

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()


举报

相关推荐

0 条评论