MPAndroidChart实时数据不可见,没有初始界限

我必须在应用程序中显示实时数据。 我选择MPAndroidChart作为图表的库。

但没有设置初始数据集的条目或设置轴最小值和轴最大值(x轴)我的图表不显示(与此设置,我不能滚动图表)。 我几乎已经从示例中复制了所有的代码,但它仍然是不可见的(例如开始没有x轴的边界,并且工作正常):

https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartExample/src/com/xxmassdeveloper/mpchartexample/RealtimeLineChartActivity.java

这里是固定的最大/最小X的例子 最大最小固定图表

这里是错误的例子,没有显示数据: 没有数据

一切都在viewpager的片段中:

以下是启动折线图的代码:

line_chart.apply { description.apply { isEnabled = true text = "Live chart" } setTouchEnabled(true) isDragEnabled = true setScaleEnabled(true) setDrawGridBackground(false) setPinchZoom(true) data = LineData().apply { setValueTextColor(Color.BLACK) } // THIS: // data = LineData(dataset("Simple").apply { // for (i in 1..10) { // addEntry(Entry(i.toFloat(), i.toFloat())) // } // }) legend.apply { form = LINE textColor = Color.BLACK } xAxis.apply { textColor = Color.BLACK setDrawGridLines(false) setAvoidFirstLastClipping(true) isEnabled = true granularity = 5f axisMinimum = 0f axisMaximum = 20f setValueFormatter { value, _ -> Date(value.toLong()).simpleSecondsFormat() } } axisLeft.apply { textColor = Color.BLACK // OR THIS: //axisMinimum = 0f //axisMaximum = 12f setDrawGridLines(true) } axisRight.isEnabled = false setVisibleXRangeMaximum(100f) } 

创建数据集的代码:

 fun dataset(label: String): LineDataSet = LineDataSet(null, label).apply { axisDependency = LEFT color = Color.BLACK setCircleColor(Color.RED) lineWidth = 2f circleRadius = 4f fillAlpha = 65 fillColor = Color.RED highLightColor = Color.GREEN valueTextColor = Color.RED valueTextSize = 9f setDrawValues(true) } 

数据来自商店,使用RxJava2:

 .observeOn(AndroidSchedulers.mainThread()) .doOnNext { Timber.d("Entry: $it, timestamp: ${it.timestamp}") } .doOnNext { line_chart.data.apply { val dataSet = getDataSetByLabel(it.macAddress, true) ?: dataset( it.macAddress).also { addDataSet(it) } addEntry(Entry(it.timestamp.toFloat(), it.energy), getIndexOfDataSet(dataSet)) notifyDataChanged() } } .doOnNext { line_chart.apply { notifyDataSetChanged() setVisibleXRangeMaximum(120f) invalidate() } } 

谢谢!

意外修复的问题,通过从第一个片段删除行setVisibleXRangeMaximum(100f)