Сейчас я добавляю PrimaryTabRow, и шрифты в заголовках вкладок отображаются неправильно.
Однако, как только я подключаю инспектор макетов Android Studio к устройству (или эмулятору, та же проблема), он мгновенно исправляется на лету.
Если я запускаю с уже подключенным и включенным инспектором макетов, шрифты по-прежнему начинаются неправильно, но затем через секунду или две перерисовываются правильно.
Если я переключусь на темную тему , шрифт перерисовывается правильно, и когда я снова переключаюсь на светлую тему, теперь тоже отображается правильно.
Это единственный компонент, в котором это происходит. При запуске остальная часть интерфейса уже с самого начала правильно отображает шрифты везде.
Вот код:
Код: Выделить всё
class MainActivity : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
enableEdgeToEdge()
setContent {
MyTheme {
val backgroundColor = MaterialTheme.colorScheme.background
val useDarkIcons = !isSystemInDarkTheme()
SideEffect {
window.statusBarColor = backgroundColor.toArgb()
window.statusBarColor = backgroundColor.toArgb()
window.navigationBarColor = backgroundColor.toArgb()
WindowInsetsControllerCompat(
window,
window.decorView
).isAppearanceLightStatusBars = useDarkIcons
WindowInsetsControllerCompat(
window,
window.decorView
).isAppearanceLightNavigationBars = useDarkIcons
}
Box(
modifier = Modifier
.fillMaxSize()
.systemBarsPadding()
.background(MaterialTheme.colorScheme.background)
) {
Scaffold(
modifier = Modifier
.fillMaxSize()
.padding(top = 24.dp),
topBar = {
TopAppBar(
title = {
Text(
text = stringResource(id = R.string.app_name),
style = MaterialTheme.typography.displayMedium
)
},
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.background,
titleContentColor = MaterialTheme.colorScheme.primary
)
)
}
) { innerPadding ->
Column(
modifier = Modifier
.padding(innerPadding)
.fillMaxSize()
.padding(horizontal = 16.dp)
) {
var selectedTabIndex by remember { mutableIntStateOf(0) }
PrimaryTabRow(selectedTabIndex = selectedTabIndex, tabs = {
Tab(
selected = selectedTabIndex == 0,
onClick = {
selectedTabIndex = 0
},
text = {
Text(
text = "Title Tab 1"
)}
)
Tab(
selected = selectedTabIndex == 1,
onClick = {
selectedTabIndex = 1
},
text = {
Text(
text = "Title Tab 2"
)}
)
})
if (selectedTabIndex == 0) {
/* List composable, rendered correctly */
} else {
/* Different list composable, rendered correctly */
}
/* Carousel composable, rendered correctly */
}
}
}
}
}
}
}
-- РЕДАКТИРОВАТЬ --
В качестве временного Чтобы решить эту проблему, я встроил шрифт в свое приложение, а не использовал загружаемый подход с помощью GoogleFont. Это решило проблему.
Все еще любопытно понять, почему это происходит исключительно в этом компоненте.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -inspector
Мобильная версия