相关疑难解决方法(0)

Jetpack Compose SubcomposeLayout 如何工作?

在官方文档中可以看到有一个名为 SubcomposeLayout 的布局定义为

布局的模拟,允许在测量阶段对实际内容进行细分,例如使用测量期间计算的值作为子项组成的参数。

可能的用例:

您需要知道在组合过程中父级传递的约束,并且无法仅使用自定义 Layout 或 LayoutModifier 来解决您的用例。请参阅 androidx.compose.foundation.layout.BoxWithConstraints。

您希望在构建第二个子项时使用第一个子项的大小。

您想根据可用尺寸懒惰地组合您的项目。例如,您有一个包含 100 个项目的列表,您不必组合所有项目,而是只组合当前可见的项目(例如其中 5 个),并在组件滚动时组合下一个项目。

我用SubcomposeLayout关键字搜索了 Stackoverflow,但找不到任何相关内容,创建了这个示例代码,从官方文档中复制了大部分代码,以测试和了解它是如何工作的

@Composable
private fun SampleContent() {

    Column(
        modifier = Modifier
            .fillMaxSize()
            .verticalScroll(rememberScrollState())
    ) {
        SubComponent(
            mainContent = {
                Text(
                    "MainContent",
                    modifier = Modifier
                        .background(Color(0xffF44336))
                        .height(60.dp),
                    color = Color.White
                )
            },
            dependentContent = {
                val size = it

                println(" Dependent size: $size")
                Column() {

                    Text(
                        "Dependent Content",
                        modifier = Modifier
                            .background(Color(0xff9C27B0)),
                        color = Color.White
                    )
                }
            }
        )

    }
} …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

13
推荐指数
2
解决办法
2万
查看次数

如何调整 LazyVerticalGrid 中项目的高度?

我用来LazyVerticalGrid显示项目列表。

LazyVerticalGrid(
            cells = GridCells.Fixed(2),
            modifier = Modifier.fillMaxSize(),
            state = listState,
            content = {
                    Box(modifier = boxModifier) {
                        ProductItemView(
                            item = items[index]
                        )
                    }
                }
            }
        )
Run Code Online (Sandbox Code Playgroud)

有时我的一些物品比旁边的物品高(附件) 在此输入图像描述

如何调整所有项目的高度?或者我应该使用VerticalGrid() 之外的其他东西?

android kotlin android-jetpack android-jetpack-compose

13
推荐指数
1
解决办法
4899
查看次数

Jetpack Compose 中具有等高行的网格布局

喷气背包组成:

我想创建一个像 UI 一样具有相同高度行的网格布局,但我找不到用于获取当前可用屏幕尺寸的函数(应用程序应该看起来像那样

结果应该是这样的:

看看上面提到的链接

我尝试过的:

我尝试在LazyVerticalGridModifier.fillMaxHeight()内部使用来生成相同大小的行,但它不起作用。除此之外,我还有手动设置每个行项目高度的想法,但我找不到在 jetpack compose 中获取可用屏幕尺寸的函数(然后我将屏幕高度除以行数) )。

val numbers = (0..34).toList()

LazyVerticalGrid(
    cells = GridCells.Fixed(7)

) {
    items(numbers.count()) {
        Column(horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Text(text = "#"+numbers.get(it))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose

12
推荐指数
3
解决办法
6732
查看次数

如何使用 Jetpack compose 实现交错的网格布局?

据我所知,我们只能使用Rowsand ColumnsinJetpack Compose来显示列表。如何实现如下图所示的交错网格布局?使用 Recyclerview 和交错网格布局管理器的正常实现非常简单。但是如何在 中做同样的事情Jetpack Compose

交错网格布局

android android-recyclerview android-jetpack-compose

11
推荐指数
2
解决办法
1758
查看次数