XAxis 上的 MP Android Chart "Table"(XAxis 的自定义渲染器)
MP Android Chart "Table" on XAxis (Custom Renderer for XAxis)
你好,我想知道这种图形是否可以使用 MP Android 图表:
我真正需要的是用其他几个 UI 组件(在本例中是 4 个 TextView 和一个 ImageView)自定义整个 XAxis。
我一直在尝试不同的解决方案,例如使用 RecyclerView 并在其单元格内使用 BarChart
,但我没有实现有效的 UI:
我也曾尝试在图表下方添加一个 ListView,但我无法根据图表同步和排序 ListView 单元格。
有什么想法吗?
您在图片中 post 制作的那种图形当然可以用 MPAndroidChart 实现,尽管并不容易。
你必须自己编写 XAxisRenderer
的子类:
ViewPortHandler vph = mChart.getViewPortHandler();
XAxisRenderer xAxisRenderer = new CustomXAxisRenderer(vph, mChart.getXAxis(), vph.getTransformer(AxisDependency.LEFT), image);
mChart.setXAxisRenderer(new CustomXAxisRenderer());
一个非常简单的概念验证看起来像这样:
public class CustomXAxisRenderer extends XAxisRenderer {
Bitmap image;
public CustomXAxisRenderer(ViewPortHandler viewPortHandler, XAxis xAxis, Transformer transformer, Bitmap image) {
super(viewPortHandler, xAxis, transformer);
this.image = image;
}
@Override
protected void drawLabels(Canvas c, float pos, MPPointF anchor) {
//same code as super class
//then, code to draw the bitmap image on the canvas
//and, code to draw the extra text
}
}
请参阅以下答案以了解如何缩放位图图像并在 canvas 上绘制它们:
How to make a custom highlight drawable in MPAndroidChart
如果您有完整的解决方案,欢迎您在此处 post 作为答案。祝你好运!
概念验证注意事项:重写 drawLabels
有点粗糙。更好的解决方案是从 drawLabels
中提取一个单独的方法,并确保它在超类的 draw(Canvas c)
中被调用。如果您想这样做,请参阅 。
你好,我想知道这种图形是否可以使用 MP Android 图表:
我真正需要的是用其他几个 UI 组件(在本例中是 4 个 TextView 和一个 ImageView)自定义整个 XAxis。
我一直在尝试不同的解决方案,例如使用 RecyclerView 并在其单元格内使用 BarChart
,但我没有实现有效的 UI:
我也曾尝试在图表下方添加一个 ListView,但我无法根据图表同步和排序 ListView 单元格。
有什么想法吗?
您在图片中 post 制作的那种图形当然可以用 MPAndroidChart 实现,尽管并不容易。
你必须自己编写 XAxisRenderer
的子类:
ViewPortHandler vph = mChart.getViewPortHandler();
XAxisRenderer xAxisRenderer = new CustomXAxisRenderer(vph, mChart.getXAxis(), vph.getTransformer(AxisDependency.LEFT), image);
mChart.setXAxisRenderer(new CustomXAxisRenderer());
一个非常简单的概念验证看起来像这样:
public class CustomXAxisRenderer extends XAxisRenderer {
Bitmap image;
public CustomXAxisRenderer(ViewPortHandler viewPortHandler, XAxis xAxis, Transformer transformer, Bitmap image) {
super(viewPortHandler, xAxis, transformer);
this.image = image;
}
@Override
protected void drawLabels(Canvas c, float pos, MPPointF anchor) {
//same code as super class
//then, code to draw the bitmap image on the canvas
//and, code to draw the extra text
}
}
请参阅以下答案以了解如何缩放位图图像并在 canvas 上绘制它们:
How to make a custom highlight drawable in MPAndroidChart
如果您有完整的解决方案,欢迎您在此处 post 作为答案。祝你好运!
概念验证注意事项:重写 drawLabels
有点粗糙。更好的解决方案是从 drawLabels
中提取一个单独的方法,并确保它在超类的 draw(Canvas c)
中被调用。如果您想这样做,请参阅