MediumTopAppBar Material3 меняет только большой заголовок
Я работаю с MediumTopAppBar и пытаюсь изменить textStyle большого заголовка, не испортив маленький заголовок.
Итак, что я делаю:
MediumTopAppBar(
title = { HeadlineLargeBlackText(text = "pageTitle") },
navigationIcon = {
IconButton(onClick = { onBackPressed.invoke() }) {
Icon(
imageVector = Icons.Filled.ArrowBack,
contentDescription = stringResource(id = R.string.action_back)
)
}
},
scrollBehavior = scrollBehavior
)
Моя проблема в том, что когда я устанавливаю для него значение «HeadlineLargeBlackText», он автоматически меняет стиль текста как для большого, так и для маленького текста, поэтому он выглядит так (изображение, сделанное с видимым как большим, так и маленьким текстом):
Я хочу, чтобы низ был большим, а верх маленьким.
Когда я захожу в MediumTopAppBar, я вижу, что textStyle большого и маленького задается в TwoRowsTopAppBar как:
titleTextStyle = MaterialTheme.typography.fromToken(TopAppBarMediumTokens.HeadlineFont),
smallTitleTextStyle = MaterialTheme.typography.fromToken(TopAppBarSmallTokens.HeadlineFont),
Но этот метод является приватным :// Итак, интересно, можно ли как-то получить доступ к этим большим/маленьким текстам отдельно?
1 ответ
В настоящее времяиспользуетtitleLarge
иheadlineSmall
стили текста, определенные атрибутом типографики в вашей теме.
Вы можете определить их в теме с помощью:
val customTypography = androidx.compose.material3.Typography(
titleLarge = TextStyle(
fontWeight = FontWeight.SemiBold,
fontSize = 22. sp,
lineHeight = 28. sp,
letterSpacing = 0. sp
),
headlineSmall = TextStyle(
fontWeight = FontWeight.SemiBold,
fontSize = 16. sp,
lineHeight = 24. sp,
letterSpacing = 0.15.sp
),
)
Если вы не хотите применять их ко всему приложению, вы можете применить пользовательскую тему только кMediumTopAppBar
с чем-то вроде:
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
AppTheme {
MediumTopAppBar(
title = {
androidx.compose.material3.Text(
"Medium TopAppBar",
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
},
//....
)
},
//....
}
где
fun AppTheme(
useDarkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable() () -> Unit
) {
//...
aMaterialTheme(
colorScheme = colors,
typography = customTypography,
content = content
)
}