2

更新:全部完成!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>

结果是图表未显示。有任何想法吗?

4

1 回答 1

0

LinearLayout 需要一个实际的高度和宽度。我确定我不需要添加它们,但至少它给了我一些可以使用的东西。

于 2012-07-13T12:24:03.647 回答