我使用自定义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方式向我推进正确的方向,我将非常感激!
答案 0 :(得分:2)
将ProgressBar添加到项目布局的底部,这是我用作列表视图项目的整个背景的一个(作为FrameLayout的元素,另一个元素是与列表项的其余部分,TextViews等的布局:
<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。引用的drawable只是一个图层列表,其中的项目包含进度条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