如何在Android的进度栏中设置进度

时间:2018-12-18 05:48:53

标签: android

这是我的水平进度栏->

<ProgressBar
        android:id="@+id/pb"
        style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:hapticFeedbackEnabled="true"
        android:progressDrawable="@drawable/point_one_progress"
        android:scaleY="0.80" />

这是我的point_one_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="12dp"/>
            <solid android:color="#cccccc"/>
        </shape>
    </item>

    <item android:id="@android:id/progress"
        android:top="4dp"
        android:bottom="4dp"
        android:left="-1dp"

        >

        <scale android:scaleWidth="100%">
            <shape>
                <corners android:radius="12dp"/>
                <solid android:color="@color/colorPrimaryDark"/>
            </shape>
        </scale>
    </item>
</layer-list>

我正在使用水平进度条显示基于一个点的进度,这表示3个以上的价值进度处于完美状态并且在进度条之内,但是对于1,2,3个进度超出进度条,请建议我如何解决如何将进度条保持在1,2,3值内。

您可以在下面的图片中看到值1->

enter image description here

对于10个值,您可以看到屏幕

enter image description here

3 个答案:

答案 0 :(得分:0)

这是可绘制填充的问题。您需要将所有四个面都设为0dp。

这是xml代码。

<ProgressBar
        android:id="@+id/pb"
        style="@android:style/Widget.Holo.Light.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:hapticFeedbackEnabled="true"
        android:progress="2"
        android:progressDrawable="@drawable/point_one_progress" />

此处已更正可绘制图形。

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="12dp" />
            <solid android:color="#cccccc" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="12dp" />
                <solid android:color="@color/colorPrimaryDark" />
            </shape>
        </clip>
    </item>
</layer-list>

答案 1 :(得分:0)

它与您的drawable有关。从item标记中移除top,bottom字段。您的可绘制文件应如下所示。还可以从进度条视图中删除scaleY

    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>

            <corners android:radius="12dp"/>
            <gradient
                android:startColor="@color/white"
                android:endColor=  "@color/white"
                />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="12dp"/>

                <solid android:color="@color/primaryDarkColor"/>
            </shape>

        </clip>
    </item>

</layer-list>

答案 2 :(得分:0)

如果需要,您可以使用此库https://github.com/nisrulz/stackedhorizontalprogressbar