是否可以使用百分比因子为Listview元素的背景着色?例如,如果我在Listview中有3个元素,其中一个有2个点而另一个只有一个:
A:2分----> 66.6666666%
B:1分----> 33.3333333%
C:0点----> 0%
我可以用某种方式为背景着色吗?
A | -------------- |
B | ------ |
C ^ | |
答案 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);