Pull to refresh

Comments 4

хорошая статья. планируете обзорную статью на более сложные кастомные лэйауты?

спасибо!

Насчет более сложный лейаутов пока что не знаю т.к. на данный момент нет идей как и о чем именно можно было бы рассказать

Спасибо, статья очень хорошая, многое стало понятнее. Но остались вопросы (вероятно, глупые, потому что я только начал во всем этим разбираться), на которые я не нашёл ответ.

  1. Откуда берутся размеры компонента, которые передаются через measurables? Если я написал свой компонент в виде Compose-функции, то как мне сделать, чтобы для этого компонента возвращались нужные мне минимальные размеры?

  2. Если я при вызове функции компонента указываю модификатор типа Modifier.offset(), то как мне внутри Layout узнать, что был передан такой модификатор, и разместить компонент с учётом этого модификатора?

  3. Можно ли внутрь Layout передать какую-то дополнительную информацию о компоненте? В статье я вижу, что единственный параметр, который отличает один компонент от другого, - это номер его позиции в списке. В моём случае этого недостаточно, мне нужно, чтобы расположение компонента зависело ещё от некоторых параметров.

  4. У меня будут компоненты двух разных типов, которые надо расположить внутри родителя по разным правилам. Я думал о том, чтобы вызывать Layout два раза, но координаты объектов разных типов взаимосвязаны, чтобы их вычислить, придётся дублировать некоторые действия в каждом из Layout'ов, а этого хотелось бы избежать. Можно ли как-то обойтись одним Layout'ом? (Вопрос перекликается с предыдущим - если я внутри Layout буду знать тип каждого компонента, проблем не будет.)

  5. А вообще, конкретно в моём случае было бы гораздо проще вообще не связываться с Layout'ами, а расположить компоненты внутри родителя вручную через модификаторы. Но есть одно но: чтобы вычислить координаты, родитель должен знать ограничения для своих размеров, а я не нашёл способа узнать их кроме как внутри Layout'а. Может, есть ещё какой-то способ их узнать?

Буду очень благодарен, если вы хотя бы подскажете направления, куда копать по этим вопросам.

Для тех, кто столкнётся с похожей задачей: все мои проблемы решила Compose-функция BoxWithConstraints. Там внутри известны ограничения, наложенные на функцию, и я смог разместить компоненты так, как мне нужно, вообще не используя Layout.

Sign up to leave a comment.

Articles