首页 > 解决方案 > Expo字体loadAsync在特定设备React Native Android中不起作用

问题描述

我正在使用 loadAsync 加载一些字体。在我的设备上测试应用程序时它运行良好,但是当我在另一台设备(Galaxy s10e)上尝试时,字体似乎已加载(使用 Font.isLoaded 检查)但在使用 fontFamily 时不显示。

这是我的 App.js


import * as Font from 'expo-font';
import {AppLoading} from 'expo';
import React, {useState} from 'react';



const fetchFonts = async() => {
  return await Font.loadAsync ({
    secular: require ('./assets/fonts/SecularOne-Regular.ttf'),
    varela: require ('./assets/fonts/VarelaRound-Regular.ttf'),
    lemon: require ('./assets/fonts/LemonMilk.otf'),
    collegiate: require ('./assets/fonts/CollegiateBlackFLF.ttf'),
    assistant: require ('./assets/fonts/Assistant-ExtraBold.ttf'),
    zvulun: require ('./assets/fonts/zvulun-black-fm.otf'),
    roboto: require ('./assets/fonts/Roboto-Medium.ttf'),
    osh: require ('./assets/fonts/OpenSansHebrew-ExtraBold.ttf'),
    oshregular: require ('./assets/fonts/OpenSansHebrew-Regular.ttf'),
    oshlight: require('./assets/fonts/OpenSansHebrew-Light.ttf'),
    myriad: require('./assets/fonts/myriad-hebrew.ttf')
  });
};



export default function App () {
  const [dataLoaded, setDataLoaded] = useState (false);

  if (!dataLoaded) {
    return (
      <AppLoading
        startAsync={() => fetchFonts().then(() => console.log('done')).catch((err) => console.log(err))}
        onFinish={() => setDataLoaded (true)}
        onError={err => console.log (err)}
      />
    );
  }

  return *the actual app*;
}

需要明确的是,字体确实可以在另一台设备 (Galaxy s10+) 上正确加载和显示。世博 SDK 37 Android 11 世博字体 8.1.0

标签: androidreact-nativefontsexpo

解决方案


推荐阅读