ListView с динамическим представлением, в частности PieChart - PullRequest
1 голос
/ 21 февраля 2012

Требование:

Добавление круговой диаграммы в представление списка.

Принятый подход: создайте пользовательский адаптер списка и имейте линейное расположение, которое является заполнителем для круговой диаграммы.Используйте achartEngine для создания круговой диаграммы во время выполнения и прикрепления ее к заполнителю.

Проблема: теперь, когда я прокручиваю размер круговой диаграммы, изменения не нужны.

Причины могут заключаться в том, чтопоскольку listview генерирует представление динамически, размер, доступный для LinearLayout в Custom Layout адаптера, изменяется при прокрутке, и, следовательно, когда я присоединяю представление круговой диаграммы с помощью параметра 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>

Ответы [ 2 ]

4 голосов
/ 25 февраля 2012

Попробуйте это

renderer.setInScroll(true);

Документы описывают его как «Для установки, если диаграмма находится внутри вида прокрутки и не нуждается в сокращении, когда недостаточно места.»

0 голосов
/ 27 февраля 2012

не могли бы вы попробовать это? изменил корневой LinearLayout и первый столбец layout_height на warp_content, затем присвоил chartView фиксированную ширину и высоту и удалил андроид: 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>

...