Измените значения меток draw value с float на int в MPAndroidCharts

#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)