相关疑难解决方法(0)

获取元素的高度 Jetpack Compose

我想获取 Jetpack Compose 中按钮(或其他元素)的高度。你知道如何获得吗?

android android-jetpack-compose

50
推荐指数
3
解决办法
5万
查看次数

如何在运行时获取可组合项的大小?

我以以下可组合项为例:

@Composable
fun CustomCanvas(
) {
   Box(
      Modifier
        .aspectRatio(1.33f)
        .fillMaxWidth())
} 
Run Code Online (Sandbox Code Playgroud)

我如何知道这个物体合成后的大小?

为什么我想知道:我正在尝试调整图像大小并将图像放置在画布上。这需要知道画布的大小。不,我不想对画布的大小进行硬编码。这个怎么做?

android android-jetpack-compose android-jetpack-compose-layout

22
推荐指数
1
解决办法
1万
查看次数

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万
查看次数

LazyColumn 内的 LazyHorizo​​ntalGrid

我有一个 LazyColumn,在其中我想显示一个包含两列的水平行,所以我尝试 LazyHorizo​​ntalGrid 来实现它。但我的应用程序崩溃了,但有例外 - IllegalArgumentException: LazyHorizontalGrid's height should be bound by parent。下面是我正在使用的代码,任何人都可以帮助修复它或通过任何其他方式我可以使一行有两列。

@Composable
fun HomeItem1() {
    Surface(modifier = Modifier.nestedScroll(rememberViewInteropNestedScrollConnection())) {
        LazyColumn {
            //other contents
            item {
                LazyHorizontalGrid(
                    rows = GridCells.Fixed(3),
                    horizontalArrangement = Arrangement.spacedBy(16.dp),
                    verticalArrangement = Arrangement.spacedBy(16.dp)
                ) {
                    items(arrayList.size) {
                        Text(arrayList[it])
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-jetpack-compose

7
推荐指数
1
解决办法
3500
查看次数

如何计算最后一个可见项目后惰性列中的空白空间

如何计算 Jetpack compose 中最后一个可见项目之后惰性列中的空白空间。

在此输入图像描述

android android-jetpack android-jetpack-compose lazycolumn

5
推荐指数
1
解决办法
1027
查看次数

3
推荐指数
2
解决办法
4926
查看次数

LazyVerticalGrid 自适应方形项目

有没有一种有效的方法可以使自适应网格的项目高度等于运行时确定的宽度?基本上我想要方形的物品。

到目前为止我已经尝试过这个:

var size by remember { mutableStateOf(IntSize.Zero) }

Column( // item
...
     .onSizeChanged {
        size = it
     }
    .size(with(LocalDensity.current) {
        size.width.toDp()
    })
)
Run Code Online (Sandbox Code Playgroud)

但我是个新手,认为这可能是一项昂贵的操作。还有其他选择吗?

android android-jetpack-compose

3
推荐指数
1
解决办法
786
查看次数