ОБНОВЛЕНИЕ: Все готово! LinearLayout нуждался в фактической высоте и ширине. Я уверен, что мне не нужно их добавлять, но, по крайней мере, это дает мне что-то, с чем можно работать. Та. Я бы сам ответил на это, но у меня явно недостаточно репутации, и мне нужно ждать 8 часов. Я потратил дни, пытаясь разобраться в этом, опубликовать вопрос и решить его за 2 часа. соз.
Я думаю, что делаю что-то не так. Я посмотрел на некоторые примеры и подумал, что делаю почти то же самое, но явно не так.
ОБНОВЛЕНИЕ: Должен был указать, что я использую графическую библиотеку aChartEngine, чтобы добавить PieChartView в LinearLayout.
у меня есть метод
protected DefaultRenderer buildCategoryRenderer(int[] colors) {
if(renderer==null)
renderer = new DefaultRenderer();
renderer.setClickEnabled(true);
renderer.setZoomEnabled(true);
renderer.setSelectableBuffer(10);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.argb(100, 50, 50, 50));
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] { 20, 30, 15, 0 });
renderer.setZoomButtonsVisible(true);
renderer.setStartAngle(90);
for (int color : colors) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(color);
renderer.addSeriesRenderer(r);
}
return renderer;
}
который вызывается в onCreate() вот так
MyDataSource dataSource = new MyDataSource(this);
dataSource.open();
dataSet = new CategorySeries("Analysis");
int i = 0;
for(String category:categoriesArray){
dataSet.add(category, dataSource.getTotalForCategory(category).getNumbers().doubleValue());
colors[i]=listOfColours[i];
i++;
}
dataSource.close();
buildCategoryRenderer(colors);
а затем в onResume()
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(graph==null){
graph = ChartFactory.getPieChartView(this, dataSet, renderer);
LinearLayout graphLayout = (LinearLayout)findViewById(R.id.all_graph);
graphLayout.addView(graph, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}else{
graph.repaint();
}
}
Это мой макет xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:scrollbars="vertical">
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/summary_table" >
<LinearLayout android:id="@+id/all_graph"
android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1">
</LinearLayout>
<LinearLayout android:background="@android:drawable/list_selector_background" android:id="@+id/current_foo_row">
<TextView
android:id="@+id/foos_current_foo"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginTop="25dp"
android:layout_marginLeft="10dp"
android:text="@string/current"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium"
android:textStyle="bold"
/>
<TextView
android:id="@+id/current_foo_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginTop="25dp"
android:layout_weight="0.4"
style="@android:style/TextAppearance.Holo.Medium"
android:textStyle="bold"/>
<ImageView
android:layout_width="0px"
android:layout_height="fill_parent"
android:src="@android:drawable/ic_menu_more"
android:contentDescription="@string/more"
android:layout_weight="0.1"/>
</LinearLayout>
<!-- Hidden bar in/Spend -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" android:background="@drawable/back" android:id="@+id/bar_spend_row" style="@android:style/TextAppearance.DeviceDefault.Medium">
<TextView
android:id="@+id/bar_spend"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:text="@string/bar_spend"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"
/>
<TextView
android:id="@+id/bar_spend_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" android:background="@drawable/back" android:id="@+id/bar_in_row" style="@android:style/TextAppearance.DeviceDefault.Medium">
<TextView
android:id="@+id/bar_in"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:text="@string/bar_in"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
<TextView
android:id="@+id/bar_in_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
</LinearLayout>
<!-- FINISH -->
<LinearLayout android:background="@android:drawable/list_selector_background" android:id="@+id/maybe_foo_row" style="@android:style/TextAppearance.DeviceDefault.Medium">
<TextView
android:id="@+id/foos_month_expected_foo"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginTop="25dp"
android:layout_marginLeft="10dp"
android:text="@string/expected"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium"
android:textStyle="bold"
/>
<TextView
android:id="@+id/maybe_foo_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginTop="25dp"
android:layout_weight="0.4"
style="@android:style/TextAppearance.Holo.Medium"
android:textStyle="bold"/>
<ImageView
android:layout_width="0px"
android:layout_height="fill_parent"
android:src="@android:drawable/ic_menu_more"
android:contentDescription="@string/more"
android:layout_weight="0.1"/>
</LinearLayout>
<!-- Hidden bar in/Spend -->
<LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:visibility="gone" android:background="@drawable/back" android:id="@+id/remaining_spend_row" style="@android:style/TextAppearance.DeviceDefault.Medium">
<TextView
android:id="@+id/remaining_spend"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:text="@string/remaining_spend"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
<TextView
android:id="@+id/remaining_spend_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent" android:layout_height="0px" android:visibility="gone" android:background="@drawable/back" android:id="@+id/remaining_in_row" style="@android:style/TextAppearance.DeviceDefault.Medium">
<TextView
android:id="@+id/remaining_in"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:text="@string/remaining_in"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
<TextView
android:id="@+id/remaining_in_value"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="0.50"
style="@android:style/TextAppearance.Holo.Medium.Inverse"/>
</LinearLayout>
<!-- FINISH -->
<LinearLayout >
<Button
android:id="@+id/foos_add_transaction_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="@string/add_transaction"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
</TableLayout>
The outcome is that the chart is not displaying. Any ideas?