更改自定义ProgressBar的大小

时间:2013-12-04 09:27:04

标签: java android size drawable extends

我创建了一个扩展ProgressBar的CustomBar,它有各种方法来自定义外观。其中一个函数为进度部分添加了一个图标。因为ProgressBar会被裁剪得更大,这是我不想要的。 所以我尝试在添加Icon时更改ProgressBar的大小。

像这样:

ViewGroup.LayoutParams params = getLayoutParams();
params.height = bitmap.getHeight();
setLayoutParams(params);

requestLayout();

这并没有解决问题,所以我尝试改变Drawable的大小。 这是一个LayerDrawable,我试过,setBounds,setLayerInsets,用填充将第一个Layer更改为InsetDrawable以获得我想要的大小。一切都没有用。

那我错过了什么?如何在运行时正确更改progressBar的大小?

1 个答案:

答案 0 :(得分:1)

我自己找到答案,你必须覆盖边界,但也要覆盖画布。

@Override
protected synchronized void onDraw(Canvas canvas)
{
    if(bitmap != null && bitmap.getHeight() > getHeight())
    {
        canvas.clipRect(0, 0, getWidth(), bitmap.getHeight(), Region.Op.REPLACE); 

        bounds = getProgressDrawable().getBounds();
        bounds.bottom = bitmap.getHeight();
    }

    doSomething();
}

重要的是Region.Op.REPLACE标志,通常裁剪只是与画布的边界相交。