android - 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)
解决方案
您可以实现自己的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)
}
}
推荐阅读
- php - Codeigniter 包括
- html - 如何确定排行榜的背景大小?
- c++ - 为什么仍然可以捕获隐藏可见性的抛出异常
- python - 将数据打印为 4 列表也会出错
- linux - 如何在 qemu 中为 ubuntu 使用自定义镜像内核?
- firebase - 将数据保存并加载到 Firebase 无法统一工作
- javascript - 数组未清空
- hyperledger-fabric - Hyperledger Fabric Caliper 未使用证书颁发机构 (CA) 服务器提交交易
- xml - archive.xml 中的 MSDeploy.MSDeployProviderOptions 是什么?
- c# - 有时调用 CompleteAsync 方法时从 Azure 设备客户端引发 DeviceMessageLockLostException