Components

Components are the basic building blocks of Vico.

ShapeComponent

A ShapeComponent draws a Shape, for which you can define a color, a stroke, and more. For Jetpack Compose, a shapeComponent function is available.

ShapeComponent(
    color = Color.BLACK,
    dynamicShader =
        ComponentShader(
            ShapeComponent(Shapes.pillShape, Color.DKGRAY),
            componentSizeDp = 4f,
        ),
    strokeWidthDp = 2f,
    strokeColor = Color.BLACK,
)

LineComponent

LineComponent extends ShapeComponent. It can draw horizontal and vertical lines, and it is used by Axis, among other classes, to draw axis lines, ticks, and guidelines. For Jetpack Compose, a lineComponent function is available.

LineComponent(
    color = Color.BLACK,
    thicknessDp = 8f,
    shape = Shapes.roundedCornerShape(allPercent = 40),
)

TextComponent

TextComponent draws text. It supports automatic line breaks, text rotation, backgrounds, and more. We recommend creating instances of this class via the textComponent builder and the textComponent composable function.

textComponent {
    color = Color.BLACK
    textSizeSp = 12f
    typeface = Typeface.MONOSPACE
    ellipsize = TextUtils.TruncateAt.END
}

OverlayingComponent

OverlayingComponent overlays two components and allows for specifying the spacing between them. This enables you to create more complex UI elements. For Jetpack Compose, an overlayingComponent function is available.

OverlayingComponent(
    outer = ShapeComponent(Shapes.pillShape, Color.BLACK.copyColor(alpha = .32f)),
    innerPaddingAllDp = 10f,
    inner = OverlayingComponent(
        outer = ShapeComponent(Shapes.pillShape, Color.BLACK),
        inner = ShapeComponent(Shapes.pillShape, Color.LTGRAY),
        innerPaddingAllDp = 5f,
    ),
)

Last updated