android - 如何在 Android 中的 ListView 项的底部添加一个简单的条形图?

标签 android listview dynamic graph progress

我正在使用自定义 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 将我推向正确的方向,我将不胜感激!

最佳答案

在您的item 布局的底部添加一个 ProgressBar,这是我用来作为 ListView 项的整个背景的一个(作为 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_*等。

注意使用的可绘制对象。引用的可绘制对象只是一个图层列表,其中包含进度条可绘制对象所需的 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

关于android - 如何在 Android 中的 ListView 项的底部添加一个简单的条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046055/

相关文章:

javascript - 在</body>前添加JS标签

python - 动态大小多维数组

Android 应用程序使用 OSGi 与服务器通信

android - 如何使 Android Studio 正确读取 (minSdkVersion from) AndroidManifest.xml?

android: Activity 作为大屏幕的子屏幕?

android - 如何在 ListView 中添加 EditText 并在所有行中动态获取其值?

android - android中的未接来电检测

c# - 如何在 listview.subitem 中添加图像

java - 单击任何 ListView 项目时,将该项目文本显示到 EditText 中

c# - 每个都有一个动态列表?