首页 > 解决方案 > MP Android 未显示 X 轴值

问题描述

没有 X 值的条形图我能够成功绘制 MP Android 图表,但如果我单击特定条形,则它不会显示 X 轴值。我正在使用 kotlin,下面是示例代码的一部分。

输入:

[{"date":"2018-09-15","count":"5"},{"date":"2018-09-16","count":"10"}]

工作代码:

val entries = ArrayList<BarEntry>()
    val labels = ArrayList<String>()
    val arr = JSONArray(jsonStringArray)
    for (i in 0 until arr.length()) {
        entries.add(BarEntry(arr.getJSONObject(i).getInt("count").toFloat(), i))
        labels.add(arr.getJSONObject(i).getString("date"))
           }
    val barDataSet = BarDataSet(entries, "Test Data")
    barDataSet.setValueTextSize(10f)
    val data = BarData(labels, barDataSet)
    barChart.data = data 
    val colors = intArrayOf(Color.rgb(132, 101, 122))
    barDataSet.setColors(colors)

标签: androidkotlinmpandroidchart

解决方案


您可以实现自己的ValueFormatter以显示您想要的任何文本。在getFormattedValue()中,您可以获得entry可以调用的访问权限getXIndex()

private class MyValueFormatter implements ValueFormatter
{

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return String.format("%d,%f",entry.getXIndex(),value);
    }
}

在 kotlin 中,您可以这样做:

barDataSet.valueFormatter = object : ValueFormatter{
    fun getFormattedValue(value: Float, entry: Entry, dataSetIndex: Int, viewPortHandler: ViewPortHandler): String {
        return String.format("%d,%f", entry.xIndex, value)
    }
}

推荐阅读