TableLayout行内的ProgressBar类吧

时间:2011-08-28 20:11:07

标签: android

我想在TableLayout的一行中显示类似ProgressBar的条形图,并将该行的文本显示在条形图的顶部。 “ProgressBar”不会在运行时移动,但它的长度在显示时间只应计算一次(因此它不是真正的ProgressBar,而是更像条形图)。我的TableLayout的行是以编程方式生成的。如何在每行中插入条形图?谢谢!

1 个答案:

答案 0 :(得分:0)

我实现的用于在进度条顶部显示文本的一个解决方案是使用如下的FrameLayout:

<TableRow>
        <!-- First cell with progress and text on top -->
        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
        >
            <ProgressBar
                android:id="@+id/progress1"
                android:progressDrawable="@drawable/progress_bg"
                android:indeterminateOnly="false"
                android:indeterminate="false"
                android:minHeight="22dp"
                android:max="100"
                android:progress="25"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
            />
            <TextView
                android:id="@+id/progress1Text"
                android:text="25"
                android:layout_width="fill_parent"
                android:layout_height="22dp"
                android:gravity="center"
            />
        </FrameLayout>
        <!-- Second cell with some text-->
        <TextView
            android:text="My cell"
            android:layout_width="wrap_content"
            android:layout_height="22dp"
            android:gravity="center_vertical"
        />
    </TableRow>

您可以使用此xml并在Java中对其进行充气,并根据需要设置元素的属性,然后将其附加到您的表中。

对于android:progressDrawable =“@ drawable / progress_bg”我使用了以下progress_bg.xml(放在“drawable”floder中):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="4dp" />
        <solid android:color="#00000000" />
        <stroke android:width="2dp" android:color="#FFFFFFFF" />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="4dp" />
            <solid android:color="#80CCCCCC" />
            <stroke android:width="2dp" android:color="#FFFFFFFF" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="4dp" />
            <solid android:color="#FFCCCCCC" />
            <stroke android:width="2dp" android:color="#FFFFFFFF" />
        </shape>
    </clip>
</item>

</layer-list>