Как сделать такую штуку не используя ConstraintLayout? Стрелка должна быть

выровнена по вертикали по центру картинки, подпись снизу - по start картинки.
Напрашивается что-то типа табличного layout, но такого вроде как нет.
Есть другие варианты, кроме ConstraintLayout?

16 ответов

9 просмотров

по-моему идеальный кейс для кастомного лейаута (через Layout функцию), чайлды можно пометить через Modifier.layoutId() чтобы потом при measure/placement их можно было различить

Pavel- Автор вопроса
Dmitry Fabrichny
по-моему идеальный кейс для кастомного лейаута (че...

Oke, я сделал это с кастомным лейаутом и с ручным вычислением координат. Вот что получилось: https://gist.github.com/pavelsidyakin-warnermedia/a7c0192275647856a5a1c3e16a41982f Там же вариант с ConstraintLayout для сравнения. Неужели кастомный лейаут с ручным позиционированием - это трувейнее в композе чем констрейнт? Почему многие так стараются избегать констрейнта? Он же в 100500 раз удобнее и очевиднее, чем это бесконечные column/row/box'ы. Я могу понять ещё совсем простые лейауты, но когда надо выходить за границы column/row/box - тут либо руками вычислять в Layout, либо констрейнт.

Pavel
Oke, я сделал это с кастомным лейаутом и с ручным ...

А почему бы просто не использовать констрейнт? Это ведь очевидно хороший кейс под него, коль элементы должны располагаться относительно друг друга с разнообразными правилами. Его как и использовать, так и избегать нужно к месту. Беда исключительно в том, что констрейнт пришёл сюда из нативной вёрстки, где большая вложенность была проблемой (как с производительностью, так и с юзабилити), а он помогал решить её. В компоузе же вложенность это наоборот — преимущество. Поэтому использовать констрейнт как раньше — например для написания целиком экрана — может стать боком. А вот для отдельных элементов, как в твоём примере, отличное решение.

Pavel- Автор вопроса

Вот

Pavel
Вот

паддинг перед текстом = ширина стрелки? вынести в константы?

Pavel
Вот

Это всё таки не "невозможно", а чуть сложнее, чем с констрейнтом.

Pavel- Автор вопроса
Konstantin Dovnar
Это всё таки не "невозможно", а чуть сложнее, чем ...

Сделайте :) Мне даж интересно как это сделать через Column/Row/Box

Pavel
Сделайте :) Мне даж интересно как это сделать чере...

Я не буду этим сейчас заниматься, но в целом логика сетки должна действовать, единственное надо колдовать над весами, размерами и т.д. Выйдет что-то из разряда: стрекла | картинка ---------------- отступ | подпись Проще ли это чем на констрейнте? Нет.

Konstantin Dovnar
Я не буду этим сейчас заниматься, но в целом логик...

а по-моему проще, даже если по строкам кода считать

Pêcheur
а по-моему проще, даже если по строкам кода считат...

Оно логически сложнее. Надо именно что подбирать, колдовать с размерами. В констейнте ты буквально описываешь словами "Встань по центру картинки, слева". Оно многими воспринимается куда проще и логичнее.

Pavel- Автор вопроса
Arkadii Ivanov
Может LazyVerticalGrid?

Я вот тож думал про что-то типа grid. Смущает только что он вроде как lazy, т.е. заточен под recyclable список. Не будет ли это пушкой по воробьям?

Pavel
Я вот тож думал про что-то типа grid. Смущает толь...

Я бы попробовал, должно быть нормально. Обычный LazyList позволяет одиночные элементы добавлять, может и здесь так можно.

Pavel- Автор вопроса
Konstantin Dovnar
Я не буду этим сейчас заниматься, но в целом логик...

Я привёл упрощённый пример. И специально акцентировал внимание на задании - отцентрировать по центру и по start картинки. Что если к стрелке добавить текст? Можно будет подобрать отступ, но он будет работать для конкретной длины строки и размера шрифта. Не гуд. Что если иконка стрелки поменяется? Опять же этот отступ поедет. Хотя тут не так критично - просто снова надо будет подобрать отступ. В общем, подход с отступами - в целом не надёжен. Констрейт - лучшее что можно тут придумать. Но пока в композе он работает не очень.

Pavel
Я привёл упрощённый пример. И специально акцентиро...

Так, о чём разговор? Я уже сказал — констрейнт в своих ситуациях отлично решает проблемы. Моё утверждение лишь о том, что нет там никакого невозможно.

Похожие вопросы

Обсуждают сегодня

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Чет мне ссыкотно опять Rainlab.User в проект ставить. Кто знает, опять наотъебись все сделали или после обнов пользоваться можно?
Black Cat
10
это группа токсиков или тех кто помогает?
Ибрагим
9
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Можете помочь с этим, я тут использую Джанго как ОРМ для бота, но бот запускать не хочет, уже всезде перерыл не могу решить, может кто то сталкивался?
Ибрагим
4
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
всем привет. подскажите. сделал политику, он верхнеуровневая. раздал права только на TEST2 (полные). вопрос - можно ли сделать так, чтобы был доступен только TEST2, а остально...
Андрей Сергеев
5
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Карта сайта