Dan*_* Li 6 android-jetpack-compose
以下是我的代码片段。我传入 editClick,将数据类对象添加到 chargeViewModel.contractSelfPay 中,该对象被观察为 itemList 状态。当我单击该图标时,我可以告诉 itemList 状态通过具有更多均匀间隔的编辑图标来接收更新。但是,BasicGrid Row 的高度不会使用 Intrinsic.Min进行拉伸。
\n如果我删除 IntrinsicSize.Min,即使行的高度被拉伸,分隔线也不再可以填充MaxHeight 以及图标列。无内在最小
\n@Composable\nfun ContractSelfPay(chargingViewModel: ChargingViewModel, editClick: () -> Unit = {}) {\n\n val itemList by chargingViewModel.contractSelfPay.observeAsState()\n\n val composeList: List<@Composable () -> Unit> = itemList?.map {\n @Composable {\n Row {\n TempFunc { StyledText(text = it.itemTitle) }\n TempFunc { StyledText(text = it.originalPrice.toString()) }\n TempFunc { StyledText(text = it.selfPay.toString(), color = self_pay_blue) }\n TempFunc { StyledText(text = it.count.toString()) }\n TempFunc { StyledText(text = (it.selfPay * it.count).toString()) }\n }\n }\n } ?: listOf()\n\n val total = itemList?.map { (it.selfPay.toInt() * it.count.toInt()) }?.sum() ?: 0\n\n BasicGrid("\xe5\x85\xa8\xe8\x87\xaa\xe8\xb2\xbb", composeList, total = total.toString(), editClick = editClick)\n}\n\n@Composable\nfun BasicGrid(\n gridTitle: String,\n itemList: List<@Composable () -> Unit>,\n total: String = "0",\n editClick: () -> Unit = {}\n) {\n Row(modifier = Modifier.height(IntrinsicSize.Min), verticalAlignment = Alignment.CenterVertically) {\n\n StyledTextBold(text = gridTitle, modifier = Modifier.weight(15f).wrapContentWidth())\n VerticalDivider()\n\n Column(\n modifier = Modifier.weight(60f)\n ) {\n itemList.forEachIndexed { index, compose ->\n compose()\n\n if (index != itemList.size - 1)\n HorizontalDivider()\n }\n\n if (itemList.isEmpty())\n StyledText(text = "\xe5\xb0\x9a\xe6\x9c\xaa\xe6\x9c\x89\xe4\xbb\xbb\xe4\xbd\x95\xe7\xb4\x80\xe9\x8c\x84", modifier = Modifier.weight(1f).wrapContentSize())\n }\n\n\n VerticalDivider()\n StyledTextBold(text = total, modifier = Modifier.weight(15f).wrapContentWidth())\n VerticalDivider()\n\n Column(\n modifier = Modifier\n .weight(10f)\n .fillMaxHeight(),\n verticalArrangement = Arrangement.SpaceEvenly\n ) {\n itemList.forEachIndexed { index, detail ->\n Image(\n painter = painterResource(R.drawable.icon_mode_edit),\n contentDescription = "",\n modifier = Modifier\n .align(Alignment.CenterHorizontally)\n .clickable { editClick() },\n )\n\n if (itemList.isNotEmpty() && index != itemList.size - 1)\n HorizontalDivider()\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
我在这里创建了问题https://issuetracker.google.com/issues/217910352。希望它能得到解决。
我能想到的解决方法之一是跟踪高度并删除 IntrinsicSize.Min。
如:
// _key_ is something that causes change of the height of the row
var height by remember(_key_) { mutableStateOf(0) }
Row(Modifier.onSizeChanged { height = it.height }) {
VerticalDivider(Modifier.height(height))
}
Run Code Online (Sandbox Code Playgroud)
在你的情况下,我想关键是 itemList 的大小。
| 归档时间: |
|
| 查看次数: |
4246 次 |
| 最近记录: |