我一直在使用AChartEngine幾個星期,截至上週,一切正常。我真的找不到我已經改變的東西,但是現在這張圖並沒有出現在我的屏幕上。我的Activity
使用圖的空佈局屬性進行初始化。在某個點上,用戶讀入輸入,然後更新圖形。AChartEngine圖形不會顯示?
這裏是我的圖形的XML代碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:background="@drawable/eti1"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="11" >
<LinearLayout
android:id="@+id/wavesOptions"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:gravity="center"
android:weightSum="8" >
<!--
Unrelated spinners/checkboxes
-->
<ScrollView
android:layout_width="fill_parent"
android:id="@+id/graphScroll"
android:layout_height="wrap_content"
android:layout_above="@id/wavesOptions"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/graph1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
下面是我的佈局的圖中顯示在Eclipse。在我的視圖頂部以藍色框出的框是我的圖形將要發生的地方。它看起來很小,但我使用wrap_content
作爲高度,所以它應該與其父項匹配。當我在我的java代碼中將圖表設置爲該視圖時,根本沒有任何cahnges。所有的複選框都會更新,並且正確添加一個新的微調框。
下面是從我的java文件我的代碼:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.waves);
renderer = new XYMultipleSeriesRenderer(2);
}
一旦用戶要求的信息,以圖表中,數據被存儲在數組中稱爲waveResults
並且該方法updateGraph()
被稱爲。其中graphView設置爲佈局的重要組成部分,是在底部一路:
public void updateGraph() {
int num = 166;
renderer = new XYMultipleSeriesRenderer(2);
dataset = new XYMultipleSeriesDataset();
// NetV1
netV1Series = new XYSeries("Net V1", 0);
// NetV2
netV2Series = new XYSeries("Net V2", 0);
// NetV3
netV3Series = new XYSeries("Net V3", 0);
// VDI1
// VDI2
// VDI3
if(spinnerChoice == 0) {
vdi1Series = new XYSeries("Diff V1", 1);
vdi2Series = new XYSeries("Diff V2", 1);
vdi3Series = new XYSeries("Diff V3", 1);
} else {
vdi1Series = new XYSeries("Curr 1", 1);
vdi2Series = new XYSeries("Curr 2", 1);
vdi3Series = new XYSeries("Curr 3", 1);
}
dataset.addSeries(netV1Series);
dataset.addSeries(netV2Series);
dataset.addSeries(netV3Series);
dataset.addSeries(vdi1Series);
dataset.addSeries(vdi2Series);
dataset.addSeries(vdi3Series);
netV1Renderer = new XYSeriesRenderer();
netV1Renderer.setColor(Color.WHITE);
netV2Renderer = new XYSeriesRenderer();
netV2Renderer.setColor(Color.YELLOW);
netV3Renderer = new XYSeriesRenderer();
netV3Renderer.setColor(Color.BLUE);
vdi1Renderer = new XYSeriesRenderer();
vdi1Renderer.setColor(Color.RED);
vdi2Renderer = new XYSeriesRenderer();
vdi2Renderer.setColor(Color.CYAN);
vdi3Renderer = new XYSeriesRenderer();
vdi3Renderer.setColor(Color.GRAY);
renderer.addSeriesRenderer(netV1Renderer);
renderer.addSeriesRenderer(netV2Renderer);
renderer.addSeriesRenderer(netV3Renderer);
renderer.addSeriesRenderer(vdi1Renderer);
renderer.addSeriesRenderer(vdi2Renderer);
renderer.addSeriesRenderer(vdi3Renderer);
renderer.setAxesColor(Color.DKGRAY);
renderer.setPointSize(14);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.BLACK);
renderer.setMarginsColor(Color.BLACK);
renderer.setChartTitle("Waves");
renderer.setShowGrid(true);
renderer.setXLabels(10);
renderer.setYLabels(7);
renderer.setXLabelsAlign(Align.RIGHT);
renderer.setYLabelsAlign(Align.RIGHT, 0);
renderer.setZoomButtonsVisible(false);
renderer.setPanEnabled(false, false);
renderer.setZoomEnabled(false, false);
renderer.setLabelsColor(Color.WHITE);
renderer.setXLabelsColor(Color.WHITE);
renderer.setYLabelsColor(0, Color.WHITE);
renderer.setYLabelsColor(1, Color.WHITE);
if(spinnerChoice == 0) {
renderer.setYTitle("Diff Volts", 1);
} else {
renderer.setYTitle("Current", 1);
}
renderer.setYTitle("Net Volts", 0);
renderer.setYAxisAlign(Align.LEFT, 0);
renderer.setYAxisAlign(Align.RIGHT, 1);
renderer.setYLabelsAlign(Align.LEFT, 1);
graphLayout = (LinearLayout) findViewById(R.id.graph1);
graphLayout.removeAllViews();
Log.i("GRAPH", "After Remove");
graphView = ChartFactory.getCubeLineChartView(getApplicationContext(), dataset, renderer, 0.3f);
Log.i("GRAPH", "Before addView");
graphLayout.addView(graphView);
Log.i("GRAPH", "After addView");
}
在updateGraph()
方法三個Log
電話都顯示在我的logcat結束。
有沒有更多的解釋爲什麼它不工作?我知道ScrollLayout沒有任何意義,因爲它什麼都不做,但是這是如何防止圖表在其子內顯示的呢? – JuiCe
我還沒有使用ScrollView,但是佈局,高度=「wrap_content」的ScrollView和圖表之間的組合聽起來並不像最好的。 –