我在文本字段中使用flex来显示我的值/范围。对于IOS,我正在使用Text的属性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
假设此处的字体为方形(宽度等于高度)字母。
尽管即使没有方程式,该公式也很有意义。你刚才