【问题标题】:Change the size of a customized ProgressBar更改自定义 ProgressBar 的大小
【发布时间】:2013-12-04 09:27:04
【问题描述】:

我创建了一个扩展 ProgressBar 的 CustomBar,它有多种方法来自定义外观。此功能之一将图标添加到进度部分。由于它被裁剪的 ProgressBar 更大,这是我不想要的。 所以我尝试在添加图标时更改 ProgressBar 的大小。

像这样:

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

requestLayout();

这并不能解决问题,所以我尝试更改 Drawable 的大小。 这是一个LayerDrawable,我试过了,setBounds,setLayerInsets,把第一个Layer改成带padding的InsetDrawable,得到我想要的大小。一切都无济于事。

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

【问题讨论】:

    标签: java android size drawable extends


    【解决方案1】:

    自己找到答案了,你要覆盖边界,还要为Canvas。

    @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 标志,通常剪辑只会与画布的边界相交。

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多