react-native - React Native 字体比例

标签 react-native font-size

我在 View 内部缩放字体时遇到问题,或者更好的是在 React Native for Android 的 Text 组件内部缩放字体。问题是,我希望文本组件内部的文本根据字符串的长度自动缩放(如果文本可以适合所需字体大小的 View ,则不执行任何操作,如果字符串对于此字体大小来说太长,则设置较小的字体大小)。

例如:

1.

<View style={{flexDirection: 'row'}}> <Text numberOfLines={1} style={{fontSize: 20}}>This is in one row.</Text> </View>

在这种情况下 (1.) 文本将呈现在一行中,字体大小为 22。

2.

<View style={{flexDirection: 'row'}}> <Text numberOfLines={1} style={{fontSize: 20}}>This is in one row and much longer text inside of Text component.</Text> </View>

在第二 (2.) 场景中,文本将呈现在一行中,末尾带有 ...,字体大小也为 20。但是,如果内容无法容纳在一行文本中,我希望字体自动缩小成分。

我搜索解决方案,发现对于 iOS,您可以使用 Text 中的属性轻松解决此问题,如下所示:

<Text adjustsFontSizeToFit minimumFontScale={.4}>Automatically font scale</Text>

这不适用于 Android,所以我真的需要帮助:/

如果有人知道我如何实现字体自动更改大小以适合一行中的文本,我将不胜感激。

提前致谢!

最佳答案

如果您有文本的最大宽度及其以字符为单位的长度,您可以计算适合的字体大小。类似于 textWidth/textLength = fontWidth。但是,fontWidth(每个字符可用的宽度)极不可能与各自的 fontSize 完全相同。但是如果你找到你的字体中最宽的字符,并且找到它的宽度和fontSize的相关性,你可以通过fontSize/fontWidth = c计算出fontSize。因此,宽度将始终小于最大值。

例如,我发现对于 Roboto Light 字体,fontSize 为 30 导致 m 的宽度为 28.8px,这是本例中最宽的字符。因此,fontSize 比实际宽度大 30/28,8 倍。所以我们可以通过textWidth/textLength = fontSize/(30/28,8)

来计算

如果您的字符有任何额外的间距,可以调整此值,如果您想要最小字体大小,您可以使用 Math.max(updatedFontSize, minimumFontSize)

关于react-native - React Native 字体比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285345/

相关文章:

python - 使用 Tesseract 和 Pyocr 在 Python 中获取字体大小

android - 为什么 EM 字体在 Android 手机上超小?

reactjs - 为什么我的 Jest 测试在使用 Typescript 的 React Native 中失败?

javascript - React Native - 使用动态名称的图像需求模块

reactjs - 使用react-redux connect和redux数据的组件生命周期顺序

javascript - 在 Javascript 中从 React Native 调用 Native Java 方法

javascript - 从 html 元素中检索 fontSize

javascript - 如何在 JavaScript 中更改字体大小?

html - <body> 字体大小不影响 <h> 标签

javascript - react-native-dropdown-picker,如何修复其他组件上的下拉选择器覆盖