1. 程式人生 > 其它 >Jetpack Compose - LazyVerticalGrid

Jetpack Compose - LazyVerticalGrid

技術標籤:Jetpack-ComposeJetpackComposeLazyVerticalVerticalGrid

Jetpack Compose - LazyVerticalGrid

Compose系列文章,請點原文閱讀。原文,是時候學習Compose了!

0、介紹

可以實現網格列表佈局。(注意此API暫時還不穩定,有可能更改!)

在alpha 10的版本中,官方提供了該API,目前基於alpha 11版本進行演示。

1、屬性一覽

【目前基於alpha 11版本】請看該函式:

@Composable fun LazyVerticalGrid(
    cells: GridCells, 
    modifier: Modifier = Modifier, 
    state: LazyListState = rememberLazyListState(), 
    contentPadding: PaddingValues = PaddingValues(0.dp), 
    content: LazyGridScope.() -> Unit
): Unit

屬性引數含義:

引數含義
modifier: Modifier = Modifier應用於佈局的修飾符
cells: GridCells一個描述單元格如何構成列的類,有關更多資訊,請參見GridCells doc。例如:GridCells.Fixed(2),表示均分螢幕寬的的兩列表格。
contentPadding: PaddingValues = PaddingValues(0.dp)在整個的內容周圍指定的填充距離
content: LazyGridScope.() -> Unit表格佈局的每項子級佈局

2、使用示例

因為該API還處於試驗模式,所以注意註解:@ExperimentalFoundationApi,程式碼如下:

@ExperimentalFoundationApi
@Composable
fun LazyVerticalGridDemo() {
    val listData = (0..4).toList()

    LazyVerticalGrid(
        cells = GridCells.Fixed(2)
    ) {
        items(listData) {

            Box(
                modifier = Modifier
                    .fillMaxWidth()
                    .height(24.dp)
                    .background(
                        color = when {
                            it % 2 == 0 -> {
                                myBlue
                            }
                            else -> {
                                myRed
                            }
                        }
                    ),
                contentAlignment = Alignment.Center,
            ) {
                Text(
                    text = "列表項:$it"
                )
            }
        }
    }
}

預覽效果如下所示
在這裡插入圖片描述

3、版本更新

  • 暫無

4、未解決問題

暫無,目前該API還處於試驗模式,暫時不做過多研究,後期需要了解功能如下:

  • 將某一item項填充滿整個寬度,而不進行均分處理
  • 類似原來RecyclerView中的ItemDecoration相關處理