I needed something similar for a project I'm working on, and I ended up rolling my own. Basically, I made a wrapper for LazyColumn, and also made a "GridRow" composable with a custom layout. I used parent data modifiers to specify the "column ID" of children
Modifier.columnId(id: Any)
. The first "item" is considered the header, and the first item's GridRow just observes the widths of any children with the columnId modifier. The remaining items (if they have a GridRow) apply the observed widths from the header item. I had to do some weird stuff with
compositionLocalOf
to communicate the widths to the child GridRow instances, which I'm not sure is going to be performant. It's quite janky and not nearly ready for anything besides my narrow use-case, but it does get the job done (unfortunately, no, I can't share the code, but maybe someday I can make an open-source-able version).