我在文本字段中使用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}>&deg;</Text>
         </Text>
         : <Text style={styles.mainValueStyle} >{min}&deg;</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}>&deg;</Text>
                    </Text>
                :
                    <Text style={styles.mainValueStyle} > - {maxSet}&deg;</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

假设此处的字体为方形(宽度等于高度)字母。

尽管即使没有方程式,该公式也很有意义。你刚才
  • 计算整个文本元素的平方
  • 计算每个字母的平方(将整个平方除以字母数字)
  • 从字母平方取平方根以获得字体大小
  • 10-04 17:08