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

如何修复React-Native Android平台下react-native-text-input-mask库的affineFormats错误

修复React-Native中react-native-text-input-mask的Android affineFormats错误

嘿,我之前也踩过react-native-text-input-mask在Android上出现affineFormats错误的坑,给你几个实测有效的解决办法,你可以挨个试试:

1. 检查Android端的依赖配置

这个库在Android端依赖第三方的android-mask-edit-text,首先确保你的项目配置正确:

  • 打开android/build.gradle,在allprojects的repositories里添加jitpack仓库:
    allprojects {
        repositories {
            // 其他仓库...
            maven { url 'https://jitpack.io' }
        }
    }
    
  • 同步gradle后,执行cd android && ./gradlew clean清理缓存,再重新编译项目。

2. 调整掩码格式适配Android

iOS和Android对掩码的解析规则略有差异,你当前用的+1 ([000])-[000]-[0000]里的方括号可能是问题所在,试试改成不带方括号的格式:

<TextInputMask
  style={commonStyles.textInput}
  value={phoneNumber}
  placeholderTextColor="darkgray"
  placeholder="Phone #"
  keyboardType="phone-pad"
  mask="+1 (000)-000-0000" // 去掉了掩码里的方括号
  onChangeText={setPhoneNumber}
/>

3. 更新库到最新版本

旧版本的库可能存在Android端的已知bug,执行命令更新到最新版:

# npm 用户
npm install react-native-text-input-mask@latest --save

# yarn 用户
yarn add react-native-text-input-mask@latest

更新完成后,记得重新编译Android项目,避免缓存问题。

4. 补充输入类型配置

给组件加上textContentType="telephoneNumber",帮助Android系统识别输入类型,可能让掩码库工作更稳定:

<TextInputMask
  style={commonStyles.textInput}
  value={phoneNumber}
  placeholderTextColor="darkgray"
  placeholder="Phone #"
  keyboardType="phone-pad"
  textContentType="telephoneNumber"
  mask="+1 (000)-000-0000"
  onChangeText={setPhoneNumber}
/>

如果以上方法都没解决,试试删除android/build和android/app/build文件夹,重新执行react-native run-android,彻底清理编译缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:47:45