我在文本字段中使用 flex 来显示我的值/范围。对于 IOS,我使用文本的属性 adjustsFontSizeToFit 和 minimumFontScale Prop 来实现理想的字体大小和缩放。我希望为 Android 启用相同的缩放比例。有没有人使用任何 Android 技巧?
<View style={{flex: 40}}>
{
(Platform.OS === 'ios') ?
<Text style={{flex: 1, paddingRight: 2}} adjustsFontSizeToFit
minimumFontScale={0.5}>
//if decimal value exists show range
(pointFivePart_1 === '5') ?
<Text style={{ flexDirection: 'row' }} >
<Text style={styles.mainValueStyle}>{first_1}</Text>
<Text style=styles.decimalValueStyle}> .pointFivePart_1}</Text>
<Text style={styles.mainValueStyle}>°</Text>
</Text>
: <Text style={styles.mainValueStyle} >{min}°</Text>
}
//if two values then show the second value as range
{// render largest value if different than min
(maxSet === minSet) ? null : (
(pointFivePart_2 === '5') ?
<Text style={{ flexDirection: 'row' }} >
<Text style={styles.mainValueStyle}> - {first_2}</Text>
<Text style={styles.decimalValueStyle}>.{pointFivePart_2}</Text>
<Text style={styles.mainValueStyle}>°</Text>
</Text>
:
<Text style={styles.mainValueStyle} > - {maxSet}°</Text>
)
}
</Text>
:
//same styling for android
最佳答案
简单但不知何故可行的解决方案(跨平台):
fontSize = Math.sqrt(textWidth*textHeight/text.length)
其中 textWidth、textHeight - 文本组件的大小,text.length - 文本的长度。
minimumFontScale 可以实现
fontSize = Math.max(fontSize,minimumFontSize)
我通过求解这样的方程组得出这个公式:
lettersInLine = textWidth/fontSize
lines = textLength/lettersInLine
lines*fontSize = textHeight
这里假设字体有正方形大小(宽度等于高度)的字母。
虽然这个公式即使没有方程也有意义。你只是
- 计算整个文本元素的平方
- 计算每个字母的平方(将整个平方除以字母数)
- 对字母正方形求平方根得到字体大小
关于android - 是否有其他替代方法可以为 Android 调整 adjustsFontSizeToFit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657294/