以编程方式在ProgressBar后台填充

时间:2018-09-17 20:22:20

标签: android background progress-bar padding

我创建了一个使用此progressDrawable的ProgressBar:

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

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="15dp"/>
        <solid android:color="@color/checkoutBackground"/>
        <stroke android:color="@color/white" android:width="2dp" />
        <padding android:top="6dp" android:bottom="6dp" android:left="6dp" android:right="6dp"/>
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <scale android:scaleWidth="100%" >
            <shape>
                <corners android:radius="10dp"/>
                <solid android:color="@color/white"/>
            </shape>
        </scale>
    </clip>
</item>
</layer-list>

但显然,Android API 21上存在一个错误,该错误会忽略我在背景上放置的填充。

我想达到那个背景并以编程方式设置它的填充。

    progressBar.findViewById(android.R.id.background).setPadding();

但是我得到一个nullPointerException

还有其他方法可以尝试吗?

2 个答案:

答案 0 :(得分:1)

删除android:id =“ @ android:id / progress”

答案 1 :(得分:0)

从以下答案中汲取灵感:enter image description here

令人惊讶的是,通过删除id可以解决此问题:android:id =“ @ android:id / progress”