我在我的应用程序中使用Roboto light字体.要设置字体,我要添加android:fontFamily="sans-serif-light"到每个视图.有没有办法将Roboto字体声明为整个应用程序的默认字体系列?我尝试过这样但它似乎没有用.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
Run Code Online (Sandbox Code Playgroud) 根据此堆栈溢出解决方案,可以通过在每个Text组件中调用自定义字体来使用它。但是当我们Text的应用程序中有数千个组件时,我们可能会碰巧错过相同的字体系列。然后我们在字体系列的情况下失去一致性。
因此,有没有办法通过不调用每个Text组件来使用自定义字体系列?
我需要创建一个适用Text于整个应用程序中每个组件的自定义字体。
有没有办法在 React Native 中全局设置字体?
我设法按照官方文档在我的 react-native expo 应用程序上加载自定义字体:
const App = () => {
let [fontsLoaded] = useFonts({
'Lato-Regular': require('../assets/fonts/Lato-Regular.ttf'),
'Lato-Bold': require('../assets/fonts/Lato-Bold.ttf'),
'Poppins-Light': require('../assets/fonts/Poppins-Light.ttf'),
'Poppins-Bold': require('../assets/fonts/Poppins-Bold.ttf'),
});
Run Code Online (Sandbox Code Playgroud)
所以我可以将它与组件样式一起使用:
<Text style={{
fontFamily: 'Lato-Bold'
}}>Home page.</Text>
Run Code Online (Sandbox Code Playgroud)
但我想像这样使用它:
<Text style={{
fontFamily: 'Lato',
fontWeight: 'bold',
}}>Home page.</Text>
Run Code Online (Sandbox Code Playgroud)
这适用于系统字体,但不适用于自定义字体。
我该如何处理?
我是 React Native (0.59.3) 的新手,我正在尝试为我的应用程序中的所有组件设置默认字体Text。我已阅读/sf/answers/3354779291/和如何在 React Native for IOS 应用程序中禁用字体缩放?。
在我的App.js我已经放入:
import { Text } from 'react-native';
Text.defaultProps.style = {
fontFamily: 'AmericanTypewriter' //just for testing
}
Run Code Online (Sandbox Code Playgroud)
但我明白了Cannot set property 'style' of undefined。
当我在此之前添加行时Text.defaultProps = Text.defaultProps || {};,我没有收到错误,但什么也没有发生(所有Text组件仍然使用默认字体)。我尝试使用不同的字体(内置 iOS 字体和我链接并验证的自定义字体),使用它们的 PostScript 名称,但没有任何反应。
我究竟做错了什么?