gpt4 book ai didi

android - 滚动超出 Y 轴的 AChartEngine 条形图

转载 作者:行者123 更新时间:2023-11-29 01:45:13 24 4
gpt4 key购买 nike

我正在使用 AChartEngine 库在我的应用程序中绘制图形。在条形图的实现中,我启用了水平平移。此外,我在我的一项 Activity 的相对布局中显示图表。问题是,当我向 Y 轴水平滚动时,条形图会超出 Y 轴,这看起来很尴尬。代码如下所示。

public GraphicalView setTheBarGraph(String title) {
String[] titles = new String[] { "WiFi", "Mobile Network" };
int[] colors = new int[] { Color.rgb(51, 102, 153),
Color.rgb(153, 51, 102) };
double[] limits = new double[] { 0, 12, 0, 0 };
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
if (title.equals("Month"))
setChartSettings(renderer, "", title, "Usage" + "(" + monthSize
+ ")", 0, usageValues.size() + 1, 0, totalMax,
Color.rgb(108, 122, 125), Color.rgb(108, 122, 125));
else if (title.equals("Day"))
setChartSettings(renderer, "", title,
"Usage" + "(" + daySize + ")", 0, usageValues.size() + 1,
0, totalMax, Color.rgb(108, 122, 125),
Color.rgb(108, 122, 125));
renderer.getSeriesRendererAt(0).setDisplayChartValues(true);
renderer.getSeriesRendererAt(1).setDisplayChartValues(true);
renderer.getSeriesRendererAt(0).setChartValuesTextSize(18);
renderer.getSeriesRendererAt(1).setChartValuesTextSize(18);
renderer.setPanLimits(limits);
renderer.setXLabels(0);
renderer.setYLabels(12);
for (int i = 0; i < monthList.size(); i++) {
renderer.addXTextLabel(i + 1, monthList.get(i));
}
renderer.setInScroll(true);
renderer.setXLabelsAlign(Align.LEFT);
renderer.setYLabelsAlign(Align.RIGHT);
renderer.setXLabelsColor(Color.rgb(108, 122, 125));
renderer.setYLabelsColor(0, Color.rgb(108, 122, 125));
renderer.setXLabelsPadding(5);
renderer.setYLabelsPadding(5);
renderer.setPanEnabled(true, false);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.TRANSPARENT);
renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
renderer.setZoomEnabled(false);
renderer.setYLabelsAngle(20);
// renderer.setZoomRate(1.1f);
renderer.setBarSpacing(0.5);
return ChartFactory.getBarChartView(mbcContext,
buildBarDataset(titles, usageValues), renderer, Type.DEFAULT);
}

protected void setChartSettings(XYMultipleSeriesRenderer renderer,
String title, String xTitle, String yTitle, double xMin,
double xMax, double yMin, double yMax, int axesColor,
int labelsColor) {
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setXAxisMax(xMax);
renderer.setYAxisMin(yMin);
renderer.setYAxisMax(yMax);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setMargins(new int[] { 35, 60, 30, 20 });
}

protected XYMultipleSeriesDataset buildBarDataset(String[] titles,
List<double[]> values) {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++) {
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++) {
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}

protected XYMultipleSeriesRenderer buildBarRenderer(int[] colors) {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(22);
renderer.setChartTitleTextSize(22);
renderer.setLabelsTextSize(17);
renderer.setLegendTextSize(22);
int length = colors.length;
for (int i = 0; i < length; i++) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}

我已经上传了这个问题的快照。请帮忙。

enter image description here

最佳答案

嗯,折腾了两天,终于把问题弄明白了。

renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));

上面的代码,将边距颜色设置为透明。这会导致条形图即使在轴线之后也可见。这是非常 Not Acceptable 。无论边距颜色如何,条形图都不应超出轴线。

关于android - 滚动超出 Y 轴的 AChartEngine 条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com