1

我能够在Dan的帮助下在 7" 平板电脑模拟器中开发条形图,并使其适合我使用的屏幕setXAxisMax()setXAxisMin(). 这是我在该模拟器上获得的图表:

AChartEngine 条形图

但是当我将它安装到不同屏幕的手机时,它看起来像这样:

肖像

在此处输入图像描述

景观

在此处输入图像描述

这是我的代码:

........................
        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setChartTitle("Submission Statistics");
//      mRenderer.setXTitle("Verdict Code");
//      mRenderer.setYTitle("No. of Submissions");
        mRenderer.setAxesColor(Color.BLACK);
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.WHITE);
        mRenderer.setMarginsColor(Color.WHITE);
        mRenderer.setZoomEnabled(true);
//      mRenderer.setBarSpacing(-0.5);
//      mRenderer.setMargins(new int[] {20, 30, 15, 0});
//      mRenderer.setShowLegend(false);
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(22);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        // mRenderer.addXTextLabel(1, "AC");
        // mRenderer.addXTextLabel(2, "PE");
        // mRenderer.addXTextLabel(3, "WA");
        // mRenderer.addXTextLabel(4, "TL");
        // mRenderer.addXTextLabel(5, "ML");
        // mRenderer.addXTextLabel(6, "CE");
        // mRenderer.addXTextLabel(7, "RE");
        // mRenderer.addXTextLabel(8, "OT");
        mRenderer.setBarWidth(80);
        mRenderer.setXAxisMin(-6);
        mRenderer.setXAxisMax(15);
        mRenderer.setYAxisMax(311);
        mRenderer.setYAxisMin(0);
        mRenderer.setYLabelsAlign(Align.RIGHT);
        mRenderer.setXLabelsColor(Color.BLACK);
        mRenderer.setLabelsColor(Color.BLACK);
        mRenderer.setYLabelsColor(0, Color.BLACK);
        mRenderer.setXLabels(0);
            mRenderer.setPanEnabled(true, false);
........................

我现在加mRenderer.setPanEnabled(true, false);,以便我只能沿着 x 轴移动以查看完整的图表。但是无论使用不同的设备,用户都应该在屏幕上看到完整的图表。

如何使此条形图跨设备兼容,使其不会在左侧和右侧被切断?

4

1 回答 1

2

setXAxisMin()和调用设置图形的setXAxisMax()比例,而不是图形的大小。

尝试减少传递给setBarWidth(). 我希望图形的总宽度由num_bars * (X+Y)X 和 Y 传递给 ( setBarWidth(X)+ setBarSpacing(Y)) 的位置给出。

我从来没有用 ACE 构建过条形图,但我认为应该根据实际窗口宽度和图表中的条形数来计算。希望有帮助。

于 2013-07-16T23:50:56.587 回答