maxLength 在粘贴较长的文本时导致崩溃

maxLength causes a crash while a longer text is pasted in

我在我的片段中声明了一个 textInputLayout,其中包含一个带参数的编辑文本

     android:inputType="textCapCharacters"
     android:maxLength="3"
     android:maxLines="1"

它在大多数设备上都能正常工作,当用户尝试输入超过 3 个字符时,它会“存活”,但如果用户尝试粘贴包含超过 3 个字符的字符串,它最终会崩溃。

"java.lang.IndexOutOfBoundsException: setSpan (0 ... 10) 结束超过长度 3"

需要说明的是,在大多数设备上粘贴较长的字符串后应用程序不会崩溃,但在某些设备上会崩溃,这就是我来这里的原因,有什么办法可以防止这种情况发生吗?

请参考this问题。 (设置Edit光标时,测量Edit内容长度时,为0,即未找到测量内容。)

您可以按照 here 所述在您的片段上使用 CLIPBOARD_SERVICE ,启用编辑(仅当它是纯文本时),最后执行 string.take(3) 并将其分配给您的文本属性 在 textInputLayout 上。