android - 在 MPAndroidChart 中,如何将 X 轴标签分成两条线?对使用任何修改后的库不感兴趣
问题描述
设置自定义 X 轴渲染器无助于在水平条形图中将 x 轴标签拆分为多行。
barChart.setXAxisRenderer(CustomXAxisRenderer(barChart.viewPortHandler, xAxis, barChart.getTransformer(yAxis.axisDependency)))
我对使用 MPAndroidChart 库的任何修改版本不感兴趣。
class CustomXAxisRenderer(viewPortHandler: ViewPortHandler?, xAxis: XAxis?, trans: Transformer?) : XAxisRenderer(viewPortHandler, xAxis, trans) {
override fun drawLabel(c: Canvas?, formattedLabel: String, x: Float, y: Float, anchor: MPPointF?, angleDegrees: Float) {
val line: List<String> = formattedLabel.split("\n")
Utils.drawXAxisValue(c, line[0], y, x, mAxisLabelPaint, anchor, angleDegrees)
for (i in 1 until line.size) { // we've already processed 1st line
Utils.drawXAxisValue(c, line[i], y, x + mAxisLabelPaint.textSize * i,
mAxisLabelPaint, anchor, angleDegrees)
}
}
}
请让我知道任何解决方案。
解决方案
class CustomXAxisRenderer(viewPortHandler: ViewPortHandler?, xAxis: XAxis?, trans: Transformer?, chart: HorizontalBarChart) : XAxisRendererHorizontalBarChart(viewPortHandler, xAxis, trans, chart) {
override fun drawLabel(c: Canvas?, formattedLabel: String, x: Float, y: Float, anchor: MPPointF?, angleDegrees: Float) {
val line: List<String> = formattedLabel.split("\n")
Utils.drawXAxisValue(c, line[0], x, y, mAxisLabelPaint, anchor, angleDegrees)
for (i in 1 until line.size) {
Utils.drawXAxisValue(c, line[i], x, y + mAxisLabelPaint.textSize * i,
mAxisLabelPaint, anchor, angleDegrees)
}
}
}
这解决了上述问题。
推荐阅读
- ios - 我需要哪些 API 密钥才能让 cordova 应用程序使用 Google 地图?
- pixel - 如何最小化两个整数,使它们的乘积小于某个值?
- python - 比较包含列表的字典
- scala - Scala中的矩阵向量乘法
- javascript - 如何对 JSON 文件执行快速搜索?
- arrays - 匹配2个数组之间的值并排列在新数组中
- flask - Flask SQLAlchemy pymysql 警告:(1366 字符串值不正确)
- angular - 更新数据时,ag-grid cell-renderer 组件失去了可点击性
- java - 手动更改语言不适用于三星设备
- java - 如何捕捉字母并显示错误,除了整数?