Как вычислять Windowsizeclass в JetPack Compose @previewAndroid

Форум для тех, кто программирует под Android
Anonymous
Как вычислять Windowsizeclass в JetPack Compose @preview

Сообщение Anonymous »

Я хочу предварительно просмотреть свой экран JetPack на верхнем уровне и проверить, правильно ли он адаптируется к разным размерам экрана. Я использую ширину Windowsizeclass , чтобы решить, как отображать экран. Это предлагаемый в настоящее время метод в Руководстве Android Dev.
Как я могу просмотреть, если мой композитный работает, как предназначено на нескольких устройствах без жесткого кодирования. Но это не работает в предварительном просмотре, если я не развернут его на устройство.

Код: Выделить всё

@ExperimentalMaterial3WindowSizeClassApi
@Preview(
name = "Smartphone, Nokia X20",
group = "Smartphone",
showSystemUi = true,
device = "spec:width=1080px,height=2400px,dpi=400",

)
@Preview(
name = "Tablet, Nokia T20",
group = "Tablet",
showSystemUi = true,
device = "spec:width=1200px,height=2000px,dpi=280"
)
@Composable
fun MasterDataScreenPreview() {
// calculateWindowSizeClass does not work in Android Studio Preview.
val windowWidthSize = calculateWindowSizeClass(LocalContext.current.getActivity()!!).widthSizeClass
MyAppTheme {
Surface {
MainScreenContent(
uiState = MainScreenUiState(),
windowSize = windowWidthSize,
)
}
}
}

fun Context.getActivity(): ComponentActivity? = when (this) {
is ComponentActivity -> this
is ContextWrapper -> baseContext.getActivity()
else -> null
}
Альтернативно я мог бы разделить этот единственный предварительный просмотр на двух отдельных предварительных просмотрах и пропустить Windowwidthsizeclass.compact для смартфона и Windowwidthsizeclass.medium для предварительного просмотра планшета.>

Подробнее здесь: https://stackoverflow.com/questions/775 ... se-preview

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