Transparent Background not working
ErickSorto opened this issue · 2 comments
Adding Color.Transparent to
val donutChartConfig = PieChartConfig(
backgroundColor = Color.Transparent, //transparent color
strokeWidth = 120f,
activeSliceAlpha = .9f,
isAnimationEnable = true,
labelVisible = true,
labelColor = Color.Black,
isEllipsizeEnabled = true,
labelFontSize = 16.sp,
chartPadding = 16,
)
Column(
modifier = Modifier
.fillMaxWidth().padding(horizontal = 12.dp, vertical = 8.dp),
horizontalAlignment = Alignment.CenterHorizontally,
) {
DonutPieChart(
modifier = Modifier
.fillMaxWidth()
.background(Color.Transparent),
donutChartData,
donutChartConfig
)
Legend(donutChartData.slices, listOfColor)
}
Results in a black background behind the circle instead of a transparent background.
I'm facing the same issue. I've set the background on a LineChart
to transparent, but it renders as the background color instead of the composable that is actually underneath.
It seems to be a problem with the Modifier.background
method, that sets the background color of the Canvas
element which is used under the hood.
fun Modifier.background(
color: Color,
shape: Shape = RectangleShape
): Modifier {
val alpha = 1.0f // for solid colors
return this.then(
BackgroundElement(
color = color,
shape = shape,
alpha = alpha,
inspectorInfo = debugInspectorInfo {
name = "background"
value = color
properties["color"] = color
properties["shape"] = shape
}
)
)
}
The method sets the alpha to 1.0 regardless of the background color actually supplied to the chart.
@mathklk
You don't actually set transparency through the modifier for canvas. You would actually need to change the background for Surface
. Surface
is causing the issue. By default the Surface
(parent composable) is not transparent and we need to make it transparent like so:
Surface(
modifier =modifier,
color = Color.Transparent
)
{
//inner composable that determines background
}
The inner most composable should determine the background colors not surface.