Случайные места в Jetpack Compose

Работая над составной функцией с помощью Jetpack Compose, я вижу, что к некоторым элементам добавлены случайные дополнительные пробелы. Кажется, что у IconButton есть дополнительное дополнение. Не могу понять, почему это происходит.

Видеть:

Мой код:

    Column(
        modifier = modifier
            .padding(
                top = padding.calculateTopPadding(),
                bottom = padding.calculateBottomPadding()
            )
            .background(MaterialTheme.colorScheme.background)
    ) {

        Row(
            modifier = Modifier.fillMaxWidth()
                .padding(horizontal = Spacing.m, vertical = 0.dp),
            horizontalArrangement = Arrangement.SpaceBetween
        ) {
            Text(
                text = "Browse",
                modifier = Modifier
                    .padding(0.dp),
                color = MaterialTheme.colorScheme.onBackground,

                style = TextStyle(
                    fontSize = 32.sp,
                ),
                fontWeight = FontWeight.SemiBold
            )

            IconButton(
                modifier = Modifier.padding(0.dp),
                onClick = { /*TODO*/ }
            ) {
                Icon(
                    imageVector = Icons.Filled.FilterAltOff,
                    contentDescription = stringResource(R.string.filters)
                )
            }
        }
    }

Других компонентов пока нет, и modifier, переданный из содержащей функции, не должен иметь на это никакого влияния Row.

Этот интервал необходим для обеспечения минимального размера цели касания.

dev.tejasb 06.06.2024 14:34

На самом деле я не об этом. Пространство, о котором вы говорите, — это пространство вокруг значка. Я пытаюсь избавиться от пространства снаружи кнопки сверху, а не внутри нее.

shadox 06.06.2024 15:15

Тем не менее, это связано с минимальной целью касания. вы не столкнетесь с этой проблемой, если замените IconButton на любой другой некликабельный компонент. это дополнение добавляется в исходный код IconButton, и вы не можете управлять им, поскольку для modifier нет параметра IconButton.

dev.tejasb 06.06.2024 15:33

если вы все еще хотите удалить это дополнение, можно добавить .minimumInteractiveComponentSize() к modifier вашего Text.

dev.tejasb 06.06.2024 15:35

@shadox: Вы бы приняли это как ответ? В нем объясняется, откуда берется отступ и зачем он нужен.

Leviathan 06.06.2024 16:00

Я исправляюсь - .minimumInteractiveComponentSize() на Text сделал свое дело. В этом есть 0 (нулевая) логика, но она работает. Как ни странно, это правильный ответ.

shadox 06.06.2024 17:28

@dev.tejasb, если вы опубликуете это как ответ, я приму его, а затем продолжу разглагольствовать об обычной последовательности Google... о боже! :D

shadox 06.06.2024 17:36

конечно, добавлю.

dev.tejasb 06.06.2024 17:37

@Левиафан, я ожидал, что он будет равномерно распределен по IconButton, но нет...

shadox 06.06.2024 17:38

Пространство распределено поровну, это просто сбивающие с толку линии на превью. @shadox

Jan Itor 06.06.2024 18:11
2
10
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот интервал необходим для обеспечения минимального размера цели касания.

Вы не столкнетесь с этой проблемой, если замените IconButton на любой другой некликабельный компонент. Это дополнение добавляется в исходный код IconButton, и вы не можете управлять им, поскольку для modifier нет параметра IconButton.

Если вы все еще хотите удалить это дополнение, можно добавить .minimumInteractiveComponentSize() к модификатору вашего Text.

В конце концов я отсортировал это по-другому, но выясню, почему это происходит. Почему пространство создано таким неравномерным образом. Спасибо за предложение.

shadox 06.06.2024 17:56

Другие вопросы по теме