android - 创建 Jetpack Compose Row,里面有 10 个圆圈,取决于行宽
问题描述
我需要做这样的事情:
这是 10 个具有相同宽度的圆形视图,具体取决于父宽度。
我现在有:
Column(
modifier = Modifier
.fillMaxWidth()
.background(color = Color.White)
.padding(vertical = 12.dp)
) {
Row(
modifier = Modifier
.padding(horizontal = 20.dp)
.padding(top = 12.dp)
) {
for (i in 1..10) {
Surface(
shape = CircleShape,
modifier = Modifier
.padding(horizontal = 2.dp)
.width(0.dp)
.height(29.dp)
.weight(1F)
.clip(CircleShape),
color = surfaceColor,
onClick = { selected = i },
) {
Text(
modifier = Modifier
.fillMaxWidth()
.wrapContentSize(Alignment.Center),
text = "$i",
color = textColor,
style = subtitle1(),
overflow = TextOverflow.Ellipsis,
)
}
}
}
}
在这种情况下,我可以通过将 Surface weight 设置为 1F 来设置相同宽度的圆圈,但我需要设置取决于宽度的圆圈的高度。我被困住了如何做到这一点。
解决方案
您可以使用aspectRatio
修饰符。将您的期望值
应用于属性。ratio
Surface(
shape = CircleShape,
modifier = Modifier
.padding(horizontal = 2.dp)
.width(0.dp)
.weight(1F)
.aspectRatio(1f)
推荐阅读
- javascript - 将表单输入值添加到 InnerHTML 输出
- perl - 使用 XML::Twig 提取 XML 的子集
- facebook-graph-api - 为 Facebook 应用创建的测试用户数
- r - 如何测试向量中的每个值是否与字符串向量中的任何值匹配?
- nullpointerexception - 无法识别 NullPointerException 的来源
- java - Java a.add(b) 方法
- python - 使用 Tatsu / grako 使用无大小写关键字解析代码
- ios - UIAlert 无法将类型“(_) throws -> ()”的值转换为预期的参数类型“((UIAlertAction) -> Void)?”
- python - 在神经网络中实现用户输入
- reactjs - 如何设置参数 react router 不误会与静态路由器?