在 Compose 中使用 Text() 时如何获取文本的字体大小?

Hel*_*oCW 4 kotlin android-jetpack-compose

我通过Android Studio 中的空撰写活动向导创建了一个新项目。

代码A是Android Studio生成的代码。

Text(text = "Hello $name!")显示默认字体样式的文本,我希望获取文本的大小和单位,例如16sp,在哪里可以找到这些信息?

代码A

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApplicationTheme {               
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colors.background
                ) {
                    Greeting("Android")
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(text = "Hello $name!")
}

@Composable
fun MyApplicationTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colors = if (darkTheme) {
        DarkColorPalette
    } else {
        LightColorPalette
    }

    MaterialTheme(
        colors = colors,
        typography = Typography,
        shapes = Shapes,
        content = content
    )
}
Run Code Online (Sandbox Code Playgroud)

Des*_*ond 6

您可以在这里查看。
https://developer.android.com/jetpack/compose/text

更改文本大小和字体样式

Text("Hello World", fontSize = 30.sp,fontStyle = FontStyle.Italic)
Run Code Online (Sandbox Code Playgroud)

Text 有一个 fontFamily 参数,允许设置可组合项中使用的字体。默认情况下,包括衬线、无衬线、等宽字体和草书字体系列。

可以使用TextLayoutResult获取前台样式
字体样式在TextLayoutInput -> TextStyle

Text("Hello World", 
        onTextLayout = { result: TextLayoutResult ->
             Log.d(TAG, "FrontSize: "+ result.layoutInput.style.fontSize)
             Log.d(TAG, "FrontStyle: "+ result.layoutInput.style.toString())
    })
Run Code Online (Sandbox Code Playgroud)