Android achartengine水平条形图看起来压缩

时间:2014-03-26 05:22:29

标签: android charts achartengine

我有一个条形图,当以垂直位置显示时看起来很正常,但如果我使用的话     renderer.setOrientation(Orientation.VERTICAL) 要设置相同的图表以在水平模式下显示图表,它看起来像这样: enter image description here

它从顶部和底部被压缩。

此图表被添加到垂直LinearLayout,其总重量约为整个屏幕的0.3,我将其设置为水平以充分利用此LinearLayout,但结果未经优化。

请帮助我,你以前见过这样的事吗?非常感谢任何建议。

我用来配置图表的部分代码:

    renderer = new XYMultipleSeriesRenderer();
    renderer.setShowLegend(false);
    renderer.setMarginsColor(Color.WHITE); //does not support transparent
    renderer.setOrientation(Orientation.VERTICAL); //horizontal bar-graph

    renderer.setBarWidth(30f);

    renderer.setMargins(new int[]{15, 0, 65, 0}); //top, left, bottom, right. Since its a horizontal bar graph, the margins has been rotated clock-wise 
    renderer.setYLabelsAlign(Align.RIGHT);
    renderer.setXLabelsAlign(Align.RIGHT);
    renderer.clearXTextLabels();
    renderer.setYLabels(0); //remove units on the Y axis(the horizontal axis since the graph has been rotated 90 degree)
    renderer.setXLabels(0); //removes 'values' from the X-Axis
    renderer.addXTextLabel(0.92, "Average");
    renderer.addXTextLabel(1.1, "Maximum");

    renderer.setDisplayValues(true);
    renderer.setLabelsColor(Color.BLACK);
    renderer.setXLabelsColor(Color.BLACK);
    renderer.setXLabelsAngle(0f);    
    renderer.setYAxisMin(0);
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(2);
    renderer.setPanEnabled(false, false);
    renderer.setExternalZoomEnabled(false);
    renderer.setZoomEnabled(false);

并添加到LinearLayout:

    LinearLayout barGraph1Layout = (LinearLayout) mainAct
                    .findViewById(R.id.bar_chart_layout);
    barGraph1Layout.removeAllViews();
    barGraph1Layout.addView(barChartView, new LayoutParams(
            LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

和LinearLayout:

<!-- PARENT LAYOUT -->
<LinearLayout
    android:id="@+id/chart_layout"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.85"
    android:orientation="vertical"
    android:visibility="invisible"
    android:weightSum="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.4"
        android:orientation="vertical"
        android:weightSum="1.0" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.3" >

            <TextView
                android:id="@+id/GraphTitle1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center" >
            </TextView>
        </LinearLayout>

        <!-- HORIZONTAL BAR CHART LAYOUT -->
        <LinearLayout
            android:id="@+id/bar_chart_layout"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.6"
            android:gravity="center"
            android:orientation="vertical" >
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.1" >

        </LinearLayout>
    </LinearLayout>
<!-- OTHER LAYOUTS -->

编辑:在SCROLLVIEW中放置图表

简而言之,它看起来仍然一样。

我已修改LinearLayout以托管滚动视图以保存图表,并将renderer.setInScroll()设置为true,并将LinearLayout.addView部分更改为ScrollView.addView,但图表仍然看起来完全正确同样的。

MODIFIED XML             

            <ScrollView
                android:id="@+id/bar_chart_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fillViewport="true" >
            </ScrollView>
        </LinearLayout>

2 个答案:

答案 0 :(得分:0)

在我看来,最好使用相同名称制作不同的XML文件,例如用于landscape的abc.xml和用于portrait的abc.xml。它会更好地调整屏幕对齐

答案 1 :(得分:0)

这是因为宽高比的变化,你应该保持这一点。

将您的图表放在scrollview中并使用此图表进行滚动。

renderer.setInScroll(true);

或者只使用portrait模式。