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

React Native Picker无法使用Poppins-Medium字体?求解决方法

React Native Picker组件设置Poppins-Medium字体不生效的解决方法

核心问题

React Native 原生Picker在Android端基于原生Spinner实现,直接通过style设置fontFamily通常无法生效,因为原生组件的样式控制逻辑和RN的JS样式不兼容。以下是具体解决步骤:


1. 确认字体文件已正确导入项目

  • 将Poppins-Medium.ttf字体文件放入android/app/src/main/assets/fonts/目录(若不存在fonts文件夹则手动创建)。
  • 若项目有react-native.config.js,确保添加字体资源配置:
    module.exports = {
      assets: ['./assets/fonts/'],
    };
    
  • 执行npx react-native link完成字体链接(RN 0.60+版本支持自动链接,但手动执行可避免遗漏)。

2. 替换为@react-native-picker/picker库(推荐方案)

官方原生Picker已被弃用,@react-native-picker/picker提供了更灵活的样式控制,能正常识别fontFamily设置:

  • 安装依赖:
    npm install @react-native-picker/picker
    # 或使用yarn
    yarn add @react-native-picker/picker
    
  • 修改组件代码:
    import { Picker } from '@react-native-picker/picker';
    
    // ...你的组件代码
    <View style={{ borderRadius: 5, borderWidth: 1, overflow: "hidden", height: 35, padding: 0, top:10, borderColor:'#00BB23' }}>
      <Picker
        style={{
          width: 300,
          height: 55,
          fontSize: 25,
          fontFamily: 'Poppins-Medium',
        }}>
        <Picker.Item label="Currency" value="accNum" />
        <Picker.Item label="NGN" value="NGN" />
      </Picker>
    </View>
    

3. 验证字体名称是否正确

部分字体文件的内部名称与文件名不一致(例如Poppins-Medium.ttf的内部名称可能是Poppins Medium),可通过系统字体查看工具确认实际名称,再修改fontFamily的值。

4. 清除缓存并重新构建

  • 清除RN缓存:
    npx react-native start --reset-cache
    
  • 重新运行Android项目:
    npx react-native run-android
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:25:20