You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置EditText的filters时出现Unresolved reference: DecimalDigitsInputFilter如何解决

Unresolved reference: DecimalDigitsInputFilter 报错的根因是:DecimalDigitsInputFilter 不是Android官方SDK内置的类,你没有提前定义或导入对应实现时就会触发该错误。

解决方法1:自定义实现该类(推荐)

直接复制以下通用实现到你的项目中即可,支持自定义小数点后保留的位数:

import android.text.InputFilter
import android.text.SpannableStringBuilder
import android.text.Spanned

class DecimalDigitsInputFilter(private val decimalDigits: Int) : InputFilter {
    override fun filter(
        source: CharSequence?,
        start: Int,
        end: Int,
        dest: Spanned?,
        dstart: Int,
        dend: Int
    ): CharSequence? {
        dest ?: return null
        val dotIndex = dest.indexOf('.')
        // 已经输入小数点的场景
        if (dotIndex >= 0) {
            // 光标在小数点之前,不做限制
            if (dend <= dotIndex) return null
            // 现有小数点后位数已达上限,禁止再输入
            val existedAfterDotCount = dest.length - dotIndex - 1
            if (existedAfterDotCount >= decimalDigits) return ""

            // 计算新增输入后是否超出位数限制,超出则裁剪
            val newDigitCount = source?.count { it.isDigit() } ?: 0
            if (existedAfterDotCount + newDigitCount > decimalDigits) {
                source ?: return ""
                val keepCount = decimalDigits - existedAfterDotCount
                var keptDigit = 0
                val sb = SpannableStringBuilder()
                for (i in start until end) {
                    val c = source[i]
                    if (c.isDigit()) {
                        if (keptDigit < keepCount) {
                            sb.append(c)
                            keptDigit++
                        }
                    } else {
                        sb.append(c)
                    }
                }
                return sb
            }
        }
        return null
    }
}

添加后你原本的调用代码即可正常运行,传入的参数2代表限制小数点后最多保留2位。
如果你使用Java开发,搜索对应Java版本的DecimalDigitsInputFilter实现即可,逻辑完全一致。

解决方法2:使用系统内置属性替代

如果不需要额外的自定义逻辑,也可以直接在EditText的布局配置中添加属性实现类似效果,不需要额外编写Filter:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:maxLength="7"
    android:digits="0123456789." />

内容的提问来源于stack exchange,提问作者GrandPC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 01:18:03