Я показываю этот главный экран в качестве предварительного просмотра:

Вот как выглядит мой экран выбора темы:

Я хочу уменьшить содержимое главного экрана, чтобы отобразить все содержимое главного экрана в доступной области предварительного просмотра средства выбора темы.
Я пробовал использовать Modifier.scale(0.4f) и Modifier.graphicsLayer(scaleX = 0.4f, ScaleY = 0.4f), но это уменьшает только то, что уже видно.

Одна из идей, которая, похоже, работает, – использовать локального поставщика для предоставления коэффициента масштабирования пользовательскому интерфейсу Compose следующим образом:
Код: Выделить всё
val LocalScaleFactor = compositionLocalOf { 1f }
@Composable
fun ScaleFactorProvider(
scaleFactor: Float = 1f,
content: @Composable () -> Unit,
) {
CompositionLocalProvider(
LocalScaleFactor provides scaleFactor,
content = content
)
}
val Int.scaleDp: Dp
@Composable
get() = (this * localScaleFactor).dp
val Int.scaleSp: TextUnit
@Composable
get() = (this * localScaleFactor).sp
val localScaleFactor: Float
@Composable get() = LocalScaleFactor.current
Код: Выделить всё
ScaleFactorProvider(0.4f) {
HomeScreenPreview()
}
Есть ли альтернативный способ уменьшить размеры всего дерева пользовательского интерфейса, чтобы оно соответствовало доступному родительскому размеру в Jetpack Compose?
< h2>Редактировать 1:
Я попробовал то, что @Leviathan предложил в комментарии. Это работает, но из-за этого сложно возложить ответственность на пользовательский интерфейс. Мой текущий пользовательский интерфейс выглядит примерно так
- Столбец
Строка
Вес 1-го ящика - Вес 1-го ящика
Теперь мне нужно переместить содержимое строки наружу< /p>
- Ящик
Столбец
Пустой ящик 1f вес
[*]Предварительный просмотр слева
[*]Предварительный просмотр справа
После уменьшения масштаба оба предварительный просмотр будет в центре, и мне нужно указать смещения по x и y там, где я хочу, чтобы они были.
Проблема этого метода заключается в том, что, поскольку поле предварительного просмотра привязано к родительский элемент, выравнивание может быть отключено в зависимости от размера пользовательского устройства.
Подробнее здесь: https://stackoverflow.com/questions/787 ... tpack-comp