android - Mp android图表,条形渐变背景条形图
问题描述
亲爱的社区,我面临以下问题,我正在使用此处提供的 MP android Chart 库创建条形图:https ://github.com/PhilJay/MPAndroidChart 。
我想为我的条设置渐变背景,使用以下代码我能够设置渐变背景并获得以下结果。
val barDataSet = BarDataSet(dummyYValues, "DataSet 1")
barDataSet.axisDependency = YAxis.AxisDependency.RIGHT
val startColor = ContextCompat.getColor(context!!, R.color.top_graph)
val endColor = ContextCompat.getColor(context!!, R.color.bottom_graph)
val gradientColors: MutableList<GradientColor> = ArrayList()
gradientColors.add(GradientColor(endColor, startColor))
barDataSet.gradientColors = gradientColors
dataSets.add(barDataSet)
val finalData = BarData(dataSets)
finalData.barWidth =(0.3f)
如果您看到主要区别在于以统一方式显示渐变颜色的预期行为,这意味着它根据图表而不是根据值显示颜色。
另外,如果有人知道如何在条形顶部添加圆角,那也会很有帮助。谢谢。
解决方案
我不知道最好的解决方案,但我将 BarChart 渲染器类复制为:
public class RoundedBarChartRenderer extends BarLineScatterCandleBubbleRenderer{
protected void drawDataSet(Canvas c, IBarDataSet dataSet, int index) {
//Use this to replace the line c.drawRect(.....)
RectF rectF = new RectF(buffer.buffer[j], buffer.buffer[j + 1], buffer.buffer[j + 2],
buffer.buffer[j + 3]);
c.drawRoundRect(rectF,15f,15f, mRenderPaint);
}}
像这样使用上面的类:
chart.renderer = RoundedBarChartRenderer(
chart,
chart.animator,
chart.viewPortHandler
)
推荐阅读
- angularjs - 如何检查元素是否在属性中具有特定属性
- couchbase - Couchbase:如何维护没有重复元素的数组?
- r-markdown - 来自 R 中 kableExtra 的脚注函数返回 LateX 错误:Rmd 文件中的多列同时将其编织为 PDF
- angular - angular 6 queryParamsHandling merge 和 perserve 的区别
- vb.net - 根据 Grid Cell QTY 将 DataGridView 写入 TextFile Duplicate Lines
- c - 如何设置fifo权限以便可以创建文件
- reactjs - Django Rest Framework - 提交的数据不是文件。检查表单上的编码类型
- kotlin - Kotlin 中的模拟框架
- r - 根据列名合并
- sql - SQL 在同一键上运行总计