2

要求:

在 listView 中添加饼图。

采取的方法:创建一个自定义列表适配器并有一个线性布局,它是饼图的占位符。在运行时使用 achartEngine 创建饼图并将其附加到占位符。

问题:现在当我滚动饼图的大小时,会发生不需要的变化。

原因可能是由于 listview 动态生成视图,因此适配器的自定义布局中的 LinearLayout 可用的大小在滚动时会发生变化,因此当我使用 fill_parent 参数附加饼图视图时,大小会发生变化。

- 编辑 -

适配器布局

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#A0FAF8CC"
    android:orientation="horizontal"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:baselineAligned="false" >

<LinearLayout
    android:layout_width="0px"
    android:layout_height="wrap_content"
    android:layout_weight="0.5"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:ellipsize="end"
        android:gravity="left"
        android:paddingLeft="10dp"
        android:text="@string/shopping"
        android:textColor="@android:color/black"
        android:textStyle="bold" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:gravity="left"
            android:text="@string/budget"
            android:paddingLeft="10dp"
            android:textColor="@android:color/black" />

        <TextView
            android:id="@+id/allTotalTypeBudget"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:gravity="right"
            android:textColor="@android:color/black"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:gravity="left"
            android:paddingLeft="10dp"
            android:text="@string/expense"
            android:textColor="@android:color/black" />

        <TextView
            android:id="@+id/expenseTotalTypeBudget"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:gravity="right"
            android:textColor="@android:color/black"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:gravity="left"
            android:paddingLeft="10dp"
            android:text="@string/remaining"
            android:textColor="@android:color/black" />

        <TextView
            android:id="@+id/remainingTotalTypeBudget"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:gravity="right"
            android:textColor="@android:color/black"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/chartView"
    android:layout_width="0px"
    android:layout_height="fill_parent"
    android:layout_weight="0.50"
    android:clickable="false"
    android:gravity="center" >
</LinearLayout>
</LinearLayout>
4

2 回答 2

4

尝试这个

renderer.setInScroll(true);

文档将其描述为“如果图表位于滚动视图内并且在没有足够空间时不需要缩小时设置。”

于 2012-02-25T07:51:08.443 回答
0

你能试试这些吗?将根 LinearLayout 和第一列 layout_height 更改为 warp_content,然后给 chartView 一个固定宽度和高度并删除 android:layout_weight attr

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="warp_content" 
   android:background="#A0FAF8CC"
   android:orientation="horizontal"
   android:paddingBottom="5dp"
   android:paddingTop="5dp"
   android:baselineAligned="false" >

   <LinearLayout
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:orientation="vertical" >

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:ellipsize="end"
    android:gravity="left"
    android:paddingLeft="10dp"
    android:text="@string/shopping"
    android:textColor="@android:color/black"
    android:textStyle="bold" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:gravity="left"
        android:text="@string/budget"
        android:paddingLeft="10dp"
        android:textColor="@android:color/black" />

    <TextView
        android:id="@+id/allTotalTypeBudget"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="right"
        android:textColor="@android:color/black"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:gravity="left"
        android:paddingLeft="10dp"
        android:text="@string/expense"
        android:textColor="@android:color/black" />

    <TextView
        android:id="@+id/expenseTotalTypeBudget"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="right"
        android:textColor="@android:color/black"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:gravity="left"
        android:paddingLeft="10dp"
        android:text="@string/remaining"
        android:textColor="@android:color/black" />

     <TextView
        android:id="@+id/remainingTotalTypeBudget"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="right"
        android:textColor="@android:color/black"
        android:textStyle="bold" />
   </LinearLayout>
</LinearLayout>

<LinearLayout
android:id="@+id/chartView"
 android:layout_width="xxxdp"
android:layout_height="XXXdp"

android:clickable="false"
android:gravity="center" >
</LinearLayout>

于 2012-02-27T08:11:04.783 回答