当前位置: 首页 > 知识库问答 >
问题:

如何在jetpack compose中仅在底部添加边框

盛跃
2023-03-14

我想在布局底部添加边框。我知道我可以使用分隔器可组合,但我只想学习如何绘制边框。

目前,我可以为所有侧面添加边框,这不是我想要的

Row(modifier = Modifier.border(border = BorderStroke(width = 1.dp,Color.LightGray))) {
                TextField(value = "", onValueChange = {}, modifier = Modifier.weight(1f))
                Switch(checked = true, onCheckedChange = {})
                Icon(Icons.Filled.Close, "Remove", tint = Color.Gray)
            }

共有3个答案

谢和颂
2023-03-14

是的,这应该这样做:-

@Suppress("UnnecessaryComposedModifier")
fun Modifier.topRectBorder(width: Dp = Dp.Hairline, brush: Brush = SolidColor(Color.Black)): Modifier = composed(
    factory = {
        this.then(
            Modifier.drawWithCache {
                onDrawWithContent {
                    drawContent()
                    drawLine(brush, Offset(width.value, 0f), Offset(size.width - width.value, 0f))
                }
            }
        )
    },
    inspectorInfo = debugInspectorInfo {
        name = "border"
        properties["width"] = width
        if (brush is SolidColor) {
            properties["color"] = brush.value
            value = brush.value
        } else {
            properties["brush"] = brush
        }
        properties["shape"] = RectangleShape
    }
)

巫马翰翮
2023-03-14

您可以在绘图范围内绘制一条线。在我看来,分隔符在代码中看起来更干净。

Row(modifier = Modifier
  .drawWithContent {
    drawContent()
    clipRect { // Not needed if you do not care about painting half stroke outside
      val strokeWidth = Stroke.DefaultMiter
      val y = size.height // - strokeWidth 
          // if the whole line should be inside component
      drawLine(
        brush = SolidColor(Color.Red),
        strokeWidth = strokeWidth,
        cap = StrokeCap.Square,
        start = Offset.Zero.copy(y = y),
        end = Offset(x = size.width, y = y)
      )
    }
  }
) {
  Text("test")
}
徐鸿文
2023-03-14

您可以使用 drawBehind 修饰符。
像这样:

Row(
    modifier = Modifier
        .drawBehind {
            val strokeWidth = indicatorWidth.value * density
            val y = size.height - strokeWidth / 2

            drawLine(
                Color.LightGray,
                Offset(0f, y),
                Offset(size.width, y),
                strokeWidth
            )
        }){
    //....
}
 类似资料:
  • 问题内容: 我想说明 只有 底边框和隐藏的另一侧。 我看到的输出:如您所见,我也看到了顶部,左侧和右侧边框,并且它们是黑色的,我想将其删除。只需要底部白色的粗2.0边框。 我正在使用的代码: 问题答案: 尝试通过Swift 5.1通过这种方式进行操作: 您必须将属性设置为 如果使用自动布局,则设置完美约束,否则将不会显示底线。 希望能帮助到你。

  • 问题内容: 我有一个3 x 3的表格。我需要一种为每行底部添加边框并为其指定特定颜色的方法。 首先,我尝试了直接方式,即: 但这没有用。所以我像这样添加了CSS: 那仍然没有用。 我更喜欢使用CSS,因为这样我就不必在每一行中添加一个属性。我尚未向中添加属性。我希望那不会影响我的CSS。 问题答案: 我以前有这样的问题。我认为不能直接采用边框样式。我的解决方法是在行中设置s的样式: CSS:

  • 我使用的是flatter,我想给一个小部件添加一个边框(在本例中是widget)。 我尝试了和,但没有看到如何添加边框。

  • 问题内容: 我有3 x 3的表格。我需要一种为每行底部添加边框并为其指定特定颜色的方法。 首先,我尝试了直接方式,即: 但这没有用。所以我像这样添加了CSS: 那仍然没有用。 我更喜欢使用CSS,因为这样我就不必在每一行中添加一个属性。我尚未向中添加属性。我希望那不会影响我的CSS。 问题答案: 我以前有这样的问题。我认为不能直接采用边框样式。我的解决方法是在行中设置s的样式: CSS:

  • 我在Galaxy Note 2和Android上工作。我想在活动的底部ActionBar中添加4个文本项。但是,添加第三个后,第四个在纵向模式下不会出现在屏幕上,而是出现在横向模式下的顶部ActionBar中。 我在这些项目上尝试了所有Android选项,结果总是一样的。 如何使用基本操作栏或其他操作栏添加4? 谢谢。 编辑: 我的XML菜单文件:

  • 问题内容: 我有一个Jtable,我想通过在行上添加边框来突出显示行。我已经扩展了a,并且我认为需要在该方法中完成工作。 我猜想是因为似乎没有行的概念,所以我需要为行中的单个单元格创建自定义边框。类似于第一个单元格的左侧,顶部和底部,所有内部单元格的顶部和底部,以及该行中最后一个单元格的顶部,底部和右侧。我在寻找如何实际执行思考过程方面遇到问题。我不确定如何使用该方法,或者这是否就是我需要采取的方