ScrollView中不显示AChartEgine条形图

时间:2015-05-21 12:52:43

标签: android achartengine

我一直试图让我的条形图显示在ScrollView中,但它根本无法工作。

这是我的布局文件,使用" android:fillViewport =" true""

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

<LinearLayout
    android:id="@+id/all"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/subjects"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </LinearLayout>
    <TextView
        android:text="subjects"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:text="total"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/total"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:text="certas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:text="erradas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/request"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>
</ScrollView>

这是我的代码,使用&#34; renderer.setInScroll(true);&#34;

XYSeries result = new XYSeries("Respostas");
    result.add(1, correctAnswers);
    result.add(2, wrongAnswers);

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(result);


    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    renderer.setAxisTitleTextSize(0);
    renderer.setChartTitleTextSize(0);
    renderer.setLabelsTextSize(20);
    renderer.setLegendTextSize(20);
    renderer.setMargins(new int[] { 15, 15, 15, 15 });
    renderer.setMarginsColor(Color.argb(0x00, 0xff, 0x00, 0x00));

    SimpleSeriesRenderer r = new SimpleSeriesRenderer();
    r.setColor(Color.BLUE);
    renderer.addSeriesRenderer(r);

    renderer.setChartTitle("");
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(3);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(totalAnswers);
    renderer.addXTextLabel(1, "Certas");
    renderer.addXTextLabel(2, "Erradas");
    renderer.setYLabelsAlign(Paint.Align.RIGHT);
    renderer.setBarSpacing(0.5);
    renderer.setShowGrid(true);
    renderer.setGridColor(Color.GRAY);
    renderer.setXLabels(0);
    renderer.setYLabels(0);
    renderer.setPanEnabled(false);
    renderer.setInScroll(true);

    GraphicalView chartView = ChartFactory.getBarChartView(context, dataset, renderer, BarChart.Type.DEFAULT);

    LinearLayout layout = (LinearLayout)findViewById(R.id.subjects);
    layout.addView(chartView,0);

我能让它发挥作用的唯一方法是添加以下内容:

chartView.setLayoutParams(new LinearLayout.LayoutParams(300, 300));

但它很糟糕,因为指标是像素,是的,我尝试过MATCH_PARENT,但它也不起作用。

我已经看到了一些类似于我的问题,但没有一个问题有任何好的答案,所以我想知道是否有人可以帮助我,或者它是否无法完成:(

谢谢你们!

1 个答案:

答案 0 :(得分:0)

你必须在某处定义高度。在ScrollView中,您使用wrap_content作为高度。宽度由match_parent定义。图表缩放到封闭容器的高度和宽度,在您的示例中,该容器尚无高度,即高度为0.例如,您可以定义图表的(最小)高度:

chartView.setMinimumHeight(300);