Row
@Composable
inline fun Row(
modifier: Modifier = Modifier,
horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
verticalAlignment: Alignment.Vertical = Alignment.Top,
content: @Composable RowScope.() -> Unit,
)
A layout composable that places its children in a horizontal sequence. For a layout composable
that places its children in a vertical sequence, see Column
. Note that by default items do not
scroll; see Modifier.horizontalScroll
to add this behavior. For a horizontally scrollable list
that only composes and lays out the currently visible items see LazyRow
.
The Row
layout is able to assign children widths according to their weights provided using the
RowScope.weight
modifier. If a child is not provided a weight, it will be asked for its
preferred width before the sizes of the children with weights are calculated proportionally to
their weight based on the remaining available space. Note that if the Row
is horizontally
scrollable or part of a horizontally scrollable container, any provided weights will be
disregarded as the remaining available space will be infinite.
When none of its children have weights, a Row
will be as small as possible to fit its children
one next to the other. In order to change the width of the Row
, use the Modifier.width
modifiers; e.g. to make it fill the available width Modifier.fillMaxWidth
can be used. If at
least one child of a Row
has a weight
, the Row
will fill the available
width, so there is no need for Modifier.fillMaxWidth
. However, if Row
's size should be
limited, the Modifier.width
or Modifier.size
layout modifiers should be applied.
When the size of the Row
is larger than the sum of its children sizes, a
horizontalArrangement
can be specified to define the positioning of the children inside the
Row
. See Arrangement
for available positioning behaviors; a custom arrangement can also be
defined using the constructor of Arrangement
. Below is an illustration of different horizontal
arrangements:
!Row arrangements
(https://developer.android.com/images/reference/androidx/compose/foundation/layout/row_arrangement_visualization.gif)
Note that if two or more Text components are placed in a Row
, normally they should be aligned
by their first baselines. Row
as a general purpose container does not do it automatically so
developers need to handle this manually. This is achieved by adding a RowScope.alignByBaseline
modifier to every such Text component. By default this modifier aligns by FirstBaseline
. If,
however, you need to align Texts by LastBaseline
for example, use a more general
RowScope.alignBy
modifier.
See example of using Texts inside the Row:
Parameters
modifier | The modifier to be applied to the Row. |
horizontalArrangement | The horizontal arrangement of the layout's children. |
verticalAlignment | The vertical alignment of the layout's children. |
content | The content of the Row |