我有一个条形图,当以垂直位置显示时看起来很正常,但如果我使用的话 renderer.setOrientation(Orientation.VERTICAL) 要设置相同的图表以在水平模式下显示图表,它看起来像这样:
它从顶部和底部被压缩。
此图表被添加到垂直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>
答案 0 :(得分:0)
在我看来,最好使用相同名称制作不同的XML文件,例如用于landscape的abc.xml和用于portrait的abc.xml。它会更好地调整屏幕对齐
答案 1 :(得分:0)
这是因为宽高比的变化,你应该保持这一点。
将您的图表放在scrollview
中并使用此图表进行滚动。
renderer.setInScroll(true);
或者只使用portrait
模式。