【问题标题】:MP Android Chart "Table" on XAxis (Custom Renderer for XAxis)XAxis 上的 MP Android 图表“表格”(XAxis 的自定义渲染器)
【发布时间】:2017-03-10 21:30:08
【问题描述】:

您好,我不知道这种图形是否可以使用 MP Android Chart:

我真正需要的是使用其他几个 UI 组件(在本例中为 4 个 TextView 和一个 ImageView)自定义整个 XAxis。

我一直在尝试不同的解决方案,例如在其单元格内使用带有 BarChart 的 RecyclerView,但我没有实现高效的 UI:

我也尝试在图表下方添加一个 ListView,但我无法根据图表同步和排序 ListView 单元格。

有什么想法吗?

【问题讨论】:

    标签: android xamarin.android mpandroidchart


    【解决方案1】:

    使用 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
        }
    }
    

    有关如何缩放位图图像并在画布上绘制它们,请参阅以下答案:

    How to make a custom image inside bars in MPAndroidChart

    How to make a custom highlight drawable in MPAndroidChart

    当您有一个完整的解决方案时,欢迎您在此处发布它作为答案。祝你好运!

    概念证明注意事项:覆盖 drawLabels 有点粗略。更好的解决方案是从drawLabels 中提取一个单独的方法,并确保在超类的draw(Canvas c) 中调用它。如果您想这样做,请参阅 this answer

    【讨论】:

    • 能否请您详细说明为什么覆盖 XAxisRenderer 的 drawLabels 很粗糙?
    • @user3261128 我猜是因为除了在该方法中绘制标签之外您还在做一些事情,并且每个方法都应该有一个单一的职责
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多