Konfiguracja Grid określa ogólną strukturę,
ale za pomocą modyfikatora gridItem możesz kontrolować pozycję, rozpiętość
i wyrównanie elementów w tej strukturze.
Ustawianie pozycji elementu
Umieść element w konkretnym wierszu lub komórce za pomocą parametrów row i column.
Indeksy współrzędnych najlepiej sprawdzają się w przypadku prostych układów siatki.
W przypadku większych lub bardziej złożonych układów zdefiniuj nazwane obszary zamiast tego.
Parametry row i column określają indeksy wierszy i kolumn, w których umieszczony jest element.
Indeksy wierszy są liczone od 1.
Jeśli określisz tylko row lub column (nie oba), element zostanie umieszczony w następnym dostępnym miejscu w tym wierszu.
Jeśli określisz oba, element zostanie umieszczony w tej komórce.
Aby określić indeks wiersza od początku, użyj dodatniej liczby całkowitej.
Aby na przykład umieścić element w pierwszym wierszu i pierwszej kolumnie, użyj gridItem(row = 1, column = 1).
Aby określić wiersz względem końca, użyj ujemnej liczby całkowitej.
Aby na przykład umieścić element w przedostatnim wierszu i kolumnie, użyj gridItem(row = -2, column = -2).
W poniższym przykładzie karta #2 jest umieszczona w drugim wierszu i drugiej kolumnie. Karta #3 jest przypisana do ostatniego wiersza (indeks -1), w którym automatycznie zajmuje pierwszą dostępną kolumnę w tym wierszu (rysunek 1).
Grid( config = { repeat(2) { column(160.dp) } repeat(3) { row(90.dp) } gap(8.dp) } ) { Card1() Card2(modifier = Modifier.gridItem(row = 2, column = 2)) Card3(modifier = Modifier.gridItem(row = -1, column = -2)) }
Rozciąganie wierszy i kolumn
Aby rozciągnąć element na kilka komórek, użyj parametrów rowSpan i columnSpan.
Możesz umieścić element interfejsu w obszarze siatki,
czyli obszarze składającym się z kilku komórek siatki.
Modyfikator gridItem umożliwia określenie obszaru siatki za pomocą parametrów rowSpan i columnSpan.
W poniższym przykładzie karta #1 jest umieszczona w obszarze składającym się z 2 wierszy i 2 kolumn (rysunek 2).
Grid( config = { repeat(3) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(8.dp) columnGap(8.dp) } ) { Card1(modifier = Modifier.gridItem(rowSpan = 2, columnSpan = 2)) Card2() Card3() Card4(modifier = Modifier.gridItem(columnSpan = 3)) }
Ustawianie wyrównania w obszarze siatki
Wyrównanie elementu interfejsu w obszarze siatki możesz ustawić, określając je w parametrze alignment modyfikatora gridItem.
W poniższym przykładzie #1 jest umieszczony na środku obszaru siatki składającego się z 2 kolumn i 2 wierszy.
Grid( config = { repeat(3) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(8.dp) columnGap(8.dp) }, ) { Text( text = "#1", modifier = Modifier .gridItem( rowSpan = 2, columnSpan = 2, alignment = Alignment.Center ), ) Card2() Card3() Card4(modifier = Modifier.gridItem(columnSpan = 3)) }
Automatyczne umieszczanie elementów pomieszane z umieszczonymi elementami
Element interfejsu w Grid, który nie ma określonej pozycji, jest umieszczany automatycznie.
Ten przykład pokazuje, jak można mieszać elementy umieszczane automatycznie z elementami interfejsu w określonych komórkach siatki.
Karty #2 i #4 są umieszczone w określonych komórkach siatki, a pozostałe elementy są umieszczane automatycznie.
Grid( config = { repeat(2) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(16.dp) columnGap(8.dp) } ) { Card1() Card2(modifier = Modifier.gridItem(row = 2, column = 2)) Card3() Card4(modifier = Modifier.gridItem(row = 3, column = 1)) Card5() Card6() }