gpt4 book ai didi

java - 更改自定义 ProgressBar 的大小

转载 作者:行者123 更新时间:2023-11-30 03:14:30 25 4
gpt4 key购买 nike

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

像这样:

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

requestLayout();

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

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

最佳答案

我自己找到了答案,你必须覆盖边界,而且还需要覆盖 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 标志,通常裁剪只会与 Canvas 的边界相交。

关于java - 更改自定义 ProgressBar 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com