Я использую Графическое представление для построения моих гистограмм в разрабатываемом приложении, и все отлично работает в портретном режиме. Однако при изменении на ландшафт метки графиков не совпадают с точками данных, как показано на рисунках ниже:
Портрет:
Пейзаж:
Как видите, метки не совпадают по отношению к столбцам. Вот мой код для этого:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_chart, container, false)
val graph = view?.findViewById(R.id.graph) as GraphView
val staticLabelsFormatter = StaticLabelsFormatter(graph)
staticLabelsFormatter.setHorizontalLabels(arrayOf("Basics", "Loops", "Functions"))
graph.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter)
graph.gridLabelRenderer.verticalLabelsColor = Color.WHITE
graph.gridLabelRenderer.horizontalLabelsColor = Color.WHITE
graph.gridLabelRenderer.gridStyle = GridLabelRenderer.GridStyle.NONE
graph.gridLabelRenderer.isVerticalLabelsVisible = false
graph.viewport.setMinX(0.0)
graph.viewport.setMinY(0.0)
graph.viewport.setMaxX(2.0)
graph.viewport.setMaxY(6.0)
graph.viewport.isXAxisBoundsManual = true
graph.viewport.isYAxisBoundsManual = true
val basics = arguments!!.getDouble("basics")
val loops = arguments!!.getDouble("loops")
val functions = arguments!!.getDouble("functions")
val series = BarGraphSeries(arrayOf(
DataPoint(0.37, basics)
))
val series2 = BarGraphSeries(arrayOf(
DataPoint(1.0, loops)
))
val series3 = BarGraphSeries(arrayOf(
DataPoint(1.6, functions)
))
series.setColor(Color.GREEN)
series2.setColor(Color.CYAN)
series3.setColor(Color.MAGENTA)
series.setAnimated(true)
series2.setAnimated(true)
series3.setAnimated(true)
series.setDrawValuesOnTop(true)
series2.setDrawValuesOnTop(true)
series3.setDrawValuesOnTop(true)
series.setValuesOnTopColor(Color.WHITE)
series2.setValuesOnTopColor(Color.WHITE)
series3.setValuesOnTopColor(Color.WHITE)
graph.addSeries(series)
graph.addSeries(series2)
graph.addSeries(series3)
return view
}
Есть ли способ назначить значения y меткам вместо точки данных x? Эта проблема происходит сейчас, потому что я вынужден установить значение y в значение x. Праздно, это было бы на этикетке. Или есть способ зафиксировать метки для определенного значения х?