#android #mpandroidchart
#Android #диаграмма mpandroidchart
Вопрос:
Я использую библиотеку диаграмм под названием MPAndroidChart, и она отвечает большинству моих потребностей. Однако мне нужно настроить некоторые части.
- Я хочу нарисовать несколько индикаторных линий для меток на
xAxis
вот так :
По мере того, как я копался, я мог бы написать CustomAxisRenderer
но, похоже, мне нужно скопировать большую часть super
кодов классов.
- Я хочу, чтобы минимальное значение было нарисовано точно на
xAxis
. Это минимальное значение также может быть равно 0 или любому другому числу.
Как это можно сделать? Возможно ли это вообще?
Будем признательны за любую помощь или подсказку.
Ответ №1:
Я решил первую проблему:
internal class IndicatorAxisRenderer(
viewPortHandler: ViewPortHandler,
xAxis: XAxis,
trans: Transformer
) : XAxisRenderer(viewPortHandler, xAxis, trans) {
private var indicatorWidth = 1f
private var indicatorHeight = 1f
private fun getXLabelPositions(): FloatArray {
var i = 0
val positions = FloatArray(mXAxis.mEntryCount * 2)
val centeringEnabled = mXAxis.isCenterAxisLabelsEnabled
while (i < positions.size) {
if (centeringEnabled) {
positions[i] = mXAxis.mCenteredEntries[i / 2]
} else {
positions[i] = mXAxis.mEntries[i / 2]
}
positions[i 1] = 0f
i = 2
}
mTrans.pointValuesToPixel(positions)
return positions
}
override fun renderAxisLine(c: Canvas?) {
super.renderAxisLine(c)
val positions = getXLabelPositions()
var i = 0
while (i < positions.size) {
val x = positions[i]
if (mViewPortHandler.isInBoundsX(x)) {
val y = mViewPortHandler.contentBottom()
c?.drawLine(
x, y,
x, y indicatorHeight,
mAxisLinePaint
)
}
i = 2
}
}
fun setIndicatorSize(width: Float, height: Float) {
this.indicatorWidth = width
this.indicatorHeight = height
}
}
Этот код отображает линии индикатора поверх оси X.
Комментарии:
1. Есть ли у вас пример использования этого класса?
2. @Dante313 Да, это сработало с моей проблемой и все еще работает над моим предыдущим проектом
3. Это круто. На самом деле я тоже уже это реализовал. Это спасло меня. У вас есть примеры кода, как вы на самом деле создаете экземпляр этого класса? 🙂 Кстати, я думаю, что в этом классе у нас нет места, где мы используем
indicatorWidth
переменную :/4. @Dante313 к сожалению, у меня нет доступного примера:(