android - 是否有其他替代方法可以为 Android 调整 adjustsFontSizeToFit?

标签 android react-native android-layout font-size

我在文本字段中使用 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}>&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

这里假设字体有正方形大小(宽度等于高度)的字母。

虽然这个公式即使没有方程也有意义。你只是

  1. 计算整个文本元素的平方
  2. 计算每个字母的平方(将整个平方除以字母数)
  3. 对字母正方形求平方根得到字体大小

关于android - 是否有其他替代方法可以为 Android 调整 adjustsFontSizeToFit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657294/

相关文章:

android - Telegram Bot API 中的 "getFile"方法

android - 如何在android中实现一种语言到另一种语言的翻译

javascript - react native : how to get file size, mime 类型和扩展名?

ios - 如何在 Objective-C 或 Swift 上发送带有 .p12 证书的 https 请求

android - Android布局真的很难成倍增长吗?

android - ExpandableListView getChildAt() 返回 null

android - 如何使用 Android 数据绑定(bind)从 UI 更新对象?

Android中的Java从一个屏幕到另一个屏幕

react-native - react 原生多列 FlatList 插入横幅

android - 如何使用 SurfaceView 平滑动画?