1

我正在使用自定义 XML 布局 listview_goal_item.xml 来表示我希望我的 ListView 项目如何显示。此 XML 布局按如下方式提供给适配器:

cursor_adapter_goals = new SimpleCursorAdapter(this,
            R.layout.listview_goal_item,
            matrix_cursor_goals, listview_fields, listview_columns);

一切都很好,我可以很容易地理解如何在 listview_fields(我的值的字符串数组)和 listview_columns(我的自定义 ListView 布局中的目标小部件的字符串数组)中显示所有信息,因为这些项目之间存在直接的固定关系。

我想为 ListView 中的每个目标项显示一个固定的“进度”条形图。这个条形图将是一个简单的可视化表示用户基于他们实现目标的百分比,75% 意味着条形图将占据 ListView 宽度的 3/4,50% 1/2 宽度等。这是我感到困惑的地方。

我应该如何处理这个?我应该创建某种动态 9 补丁图像吗?我是否应该创建一个简单的表格,其中的行在黑色表格背景上使用对比色动态调整大小?

如果您能以编程方式和所需的 XML 将我推向正确的方向,我将不胜感激!

4

1 回答 1

2

在项目布局的底部添加一个 ProgressBar ,这是我用来作为列表视图项目的整个背景的一个(作为 FrameLayout 的一个元素,另一个元素是与列表项其余部分的布局,文本视图等):

 <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="0dp"
        android:padding="0dp"
        android:progressDrawable="@drawable/progress_timer" />

layout_*根据您的需要更改等。

注意使用的drawable。引用的可绘制对象只是一个图层列表,其中包含id进度条可绘制对象所需的项目。另请注意,背景设置为透明:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@android:id/background"
    android:drawable="@android:color/transparent"/>
<item android:id="@android:id/secondaryProgress">
    <scale
        android:drawable="@color/..."
        android:scaleWidth="100%" />
</item>
<item android:id="@android:id/progress">
    <scale
        android:drawable="@color/..."
        android:scaleWidth="100%" />
</item>
</layer-list>

在您的代码中,您只需将其视为任何 ProgressBar:

ProgressBar progressBar = (ProgressBar) convertView.findViewById(R.id.progressBar);

更新时:

progressBar.setMax(100); //100 for example for percent
progressBar.setProgress(20); //20% done
于 2012-12-26T20:51:56.043 回答