首页 > 解决方案 > MPAndroidChart Barchart:设置关联到高亮条的标签颜色

问题描述

我目前正在一个项目中使用 MPAndroidChart。我正在使用带有自定义 BarChartRenderer 和 XAxisRenderer 的 BarChart。

我面临的问题是我希望与突出显示(单击)条相关联的标签的颜色与条的颜色相同。

有没有办法通过覆盖库函数/类来做到这一点?

这是我的图表的实际状态的屏幕截图(10 月 16 日的条形图突出显示)。

在此处输入图像描述

这就是我想要的最终结果

在此处输入图像描述

有没有人试图在 MPAndroidChart 上做这种事情?

标签: androidkotlinmpandroidchart

解决方案


试试这个对我有用的解决方案:

解决方案是使用自定义 ColoredLabelXAxisRenderer 类扩展 XAxisRenderer,当覆盖有趣的 drawLabels 时,您可以使用 2 个变量 isUpdated:Boolean 和 selectedIndex:Int,当您单击 barChart 时,您需要更改值(isUpdated,selectedIndex)并使用此条件来改变标签的颜色

 if (isUpdated && selectedIndex != -1) {
                mAxisLabelPaint.color =
                    getUpdateColorForXValue(selectedIndex, mXAxis.mEntries[j / 2].toInt())
            }

并在单击 barChart 时调用构建器并更改这样的值

  barChart.setOnChartValueSelectedListener(object : OnChartValueSelectedListener {
    override fun onValueSelected(e: Entry?, h: Highlight?) {

        var lastValue: ArrayList<String> = arrayListOf()
        var beforeLastValue: ArrayList<String> = arrayListOf()

        if (e?.x != null && !xValues.isNullOrEmpty() && !yValues.isNullOrEmpty()) {
            buildBarChartView(
                getCurrency(currency),
                xValues,
                yValues,
                isUpdate = true,
                selectedIndex = e.x.toInt()
            )
            updateBarView()
        }

推荐阅读