2

要件:

listViewに円グラフを追加します。

採用したアプローチ:カスタムリストアダプターを作成し、円グラフのプレースホルダーであるlinearlayoutを作成します。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_weightattrを削除します。

<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 に答える