#android #android-studio #kotlin #mpandroidchart
Вопрос:
Я пытался использовать MPAndroidCharts
в своем приложении. Я работал над форматированием значения оси y от Int
до Float
, используя следующий код
private fun createChartData(): BarData {
val values: ArrayList<BarEntry> = ArrayList()
for (i in 0 until MAX_X_VALUE) {
val x = i.toFloat()
val y: Float = randomFloatBetween(10, 100)
values.add(BarEntry(x, y))
}
val set1 = BarDataSet(values, SET_LABEL)
val dataSets: ArrayList<IBarDataSet> = ArrayList()
set1.setColor(ContextCompat.getColor(this.requireContext(), R.color.clrAppTheme))
set1.highLightAlpha = 50 // setting opacity for bars
set1.valueFormatter = IntegerFormatter() // here i m formatting values
set1.valueTextColor = ContextCompat.getColor(this.requireContext(),R.color.white)
dataSets.add(set1)
val bardata = BarData(dataSets)
//bardata.setValueFormatter(IntegerFormatter())
return bardata
}
class IntegerFormatter : ValueFormatter() {
override fun getFormattedValue(
value: Float,
entry: Entry?,
dataSetIndex: Int,
viewPortHandler: ViewPortHandler?
): String {
return Math.round(value).toString()
}
}
Но он все еще показывает float
значения в метке. Что я делаю не так?
Также не смог установить Opacity for bars using Alpha values
. пожалуйста, предложите .
ЗАМЕТКА Досталась мне сама. Вот решение, если кто-то застрял
bardata.setValueFormatter(MyAxisValueFormatter())
class MyAxisValueFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
return Math.round(value).toString()
}
override fun getBarLabel(barEntry: BarEntry?): String {
return Math.round(barEntry!!.y).toString()
}
}
Комментарии:
1. Попробуйте так, пожалуйста:
val d = 156.0394283479832 val f = String.format("%.0f", d)