MPAndroidChart饼图图例被截断 开启isWordWrapEnabled未生效如何解决
问题解决方法
MPAndroidChart的isWordWrapEnabled属性仅在图例水平排列、位于图表顶部/底部时才会生效,你当前的配置缺少图例位置、可绘制宽度限制两个必要配置,修改代码如下:
在你的createChart方法中,替换原有图例相关配置,补充以下代码:
binding.pieChart.apply { isDrawHoleEnabled=false legend.apply { // 设置图例位置为图表底部水平居中 verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER orientation = Legend.LegendOrientation.HORIZONTAL // 开启自动换行 isWordWrapEnabled = true // 限制图例最大可用宽度为图表宽度的90%(可自行调整比例) maxSizePercent = 0.9f // 可选:调整条目尺寸、间距优化显示效果 formSize = 12f xEntrySpace = 10f yEntrySpace = 5f } // 强制重新计算图表布局,让配置生效 calculateOffsets() data = PieData(dataSet) invalidate() }
如果调整后还是有超长标签被截断的情况,可以手动给长标签插入换行符\n强制换行,比如对PieEntry的label做预处理:
val pieEntry= chartData.map { val wrapName = if (it.name.length > 8) { it.name.replaceRange(8,8,"\n") } else it.name PieEntry(it.equity, wrapName) }
内容的提问来源于stack exchange,提问作者WISHY
相关产品推荐
相关产品推荐

