TextInput 允许字体缩放 false

Far*_*ıcı 6 textinput reactjs react-native

我正在使用 React Native 构建一个应用程序。问题是,当通过手机设置更改字体大小时,应用程序中的字体大小也会发生变化,即使它们都设置为固定的字体大小。

例如,考虑以下Text字体大小为 12 的元素:

<Text style={{fontSize: 12}}>Hello World</Text>
Run Code Online (Sandbox Code Playgroud)

我发现有一个针对allowFontScaling此问题命名的道具。因此,我转到App.js并添加以下行以禁用整个应用程序中的字体缩放:

Text.defaultProps.allowFontScaling = false;
Run Code Online (Sandbox Code Playgroud)

它工作完美。但是,元素似乎并未实现相同的道具TextInput。当我尝试对 执行相同操作时TextInput,出现以下错误:

undefined 不是对象(评估 '_reactNative.TextInput.defaultProps.allowFontScaling = false')

因此,我可能会为 设定固定的字体大小Text,但不会TextInput。这个问题有什么解决方法吗?我的react-native版本是0.48.4。

提前致谢。

Fra*_*eau 5

解决此问题的一个简单解决方案是在我的 App.js 文件顶部添加以下代码:

Text.defaultProps = {
  ...(Text.defaultProps || {}),
  allowFontScaling: false,
};
TextInput.defaultProps = {
  ...(TextInput.defaultProps || {}),
  allowFontScaling: false,
};
Run Code Online (Sandbox Code Playgroud)

干杯。


小智 2

由于“TextInput”的allowFontScaling属性在Android上不起作用,因此iOS和Android的解决方法是 -

  1. 从反应本机导入 PixelRatio
  2. 在 TextInput 样式中将 fontSize 设置为 {intendedFontSize / PixelRatio.getFontScale()}

它将修复您的字体大小,并且不会因为系统设置而改变