Отображается неправильный шрифт, который мгновенно исправляется при переключении инспектора макетов.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отображается неправильный шрифт, который мгновенно исправляется при переключении инспектора макетов.

Сообщение Anonymous »

У меня возникла странная проблема с пользовательским шрифтом. Он отображается правильно во всем приложении, без проблем.
Сейчас я добавляю 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»