首页 > 解决方案 > Mp android图表,条形渐变背景条形图

问题描述

亲爱的社区,我面临以下问题,我正在使用此处提供的 MP android Chart 库创建条形图:https ://github.com/PhilJay/MPAndroidChart 。

我想为我的条设置渐变背景,使用以下代码我能够设置渐变背景并获得以下结果。

val barDataSet = BarDataSet(dummyYValues, "DataSet 1")
barDataSet.axisDependency = YAxis.AxisDependency.RIGHT

val startColor = ContextCompat.getColor(context!!, R.color.top_graph)
val endColor = ContextCompat.getColor(context!!, R.color.bottom_graph)

val gradientColors: MutableList<GradientColor> = ArrayList()
gradientColors.add(GradientColor(endColor, startColor))

barDataSet.gradientColors = gradientColors
dataSets.add(barDataSet)
val finalData = BarData(dataSets)
finalData.barWidth =(0.3f)

当前结果

我正在尝试存档类似于以下示例的内容 预期行为

如果您看到主要区别在于以统一方式显示渐变颜色的预期行为,这意味着它根据图表而不是根据值显示颜色。

另外,如果有人知道如何在条形顶部添加圆角,那也会很有帮助。谢谢。

标签: androidmpandroidchart

解决方案


我不知道最好的解决方案,但我将 BarChart 渲染器类复制为:

public class RoundedBarChartRenderer extends BarLineScatterCandleBubbleRenderer{
    protected void drawDataSet(Canvas c, IBarDataSet dataSet, int index) {

    //Use this to replace the line c.drawRect(.....)
    RectF rectF = new RectF(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],
        buffer.buffer[j + 3]);
    c.drawRoundRect(rectF,15f,15f, mRenderPaint);
}}

像这样使用上面的类:

chart.renderer = RoundedBarChartRenderer(
    chart,
    chart.animator,
    chart.viewPortHandler
)

推荐阅读