listview的背景颜色百分比

时间:2014-08-05 15:00:54

标签: android listview colors background

是否可以使用百分比因子为Listview元素的背景着色?例如,如果我在Listview中有3个元素,其中一个有2个点而另一个只有一个:

A:2分----> 66.6666666%

B:1分----> 33.3333333%

C:0点----> 0%

我可以用某种方式为背景着色吗?

A | -------------- |

B | ------ |

C ^ | |

2 个答案:

答案 0 :(得分:1)

您可以尝试使用ClipDrawable并在列表适配器中设置getView()内的drawable级别。

答案 1 :(得分:0)

我以这种方式解决:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <FrameLayout
            android:id="@+id/voteBackground"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@color/gray_light"

            >

         </FrameLayout>

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


            <TextView
                android:id="@+id/tvVote"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/orange"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tvVoteNumber"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:background="@color/orange"
                android:padding="10dp"
                android:text="dsadsadsadsadsa"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/white" />
        </LinearLayout>

    </FrameLayout>
</LinearLayout>

之后用setLayoutParams从适配器更改frameLayout的宽度

DisplayMetrics displayMetrics = mContext.getResources()
        .getDisplayMetrics();
int  screenWidthInPix=displayMetrics.widthPixels;
FrameLayout background = (FrameLayout)convertView.findViewById(R.id.voteBackground);
ViewGroup.LayoutParams params = background.getLayoutParams();
params.width = (screenWidthInPix*entry.getVote())/total;
background.setLayoutParams(params);