gpt4 book ai didi

java - 如何从重写的 setImageBitmap() 中获取 ImageView 的大小

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:06 25 4
gpt4 key购买 nike

我有一个 ImageView 的子类,它重写 setImageBitmap() 来拦截给定的位图并填充它以适应 View 的宽高比。为了做到这一点,我需要知道 View 的大小,但是在 setImageBitmap() 期间 getWidth()getHeight() 都返回 0 .

看到 onSizeChanged() 被以正确的尺寸调用后,我尝试延迟处理直到那时:

private Bitmap pending_bitmap;

@Override public void setImageBitmap( Bitmap b ) {
if ( getWidth() == 0 || getHeight() == 0 ) pending_bitmap = b;
else applyBitmap( b );
}

@Override public void onSizeChanged( int w, int h, int old_w, int old_h ) {
if ( pending_bitmap != null ) {
applyBitmap( pending_bitmap );
pending_bitmap = null;
}
}

private void applyBitmap( b ) {
// Do some stuff that needs getWidth() and getHeight()
super.setImageBitmap( b );
}

但是,现在 onSizeChanged() 不会被调用,因为 setImageBitmap() 期间没有发生任何更改。

我尝试将 null 传递给 super.setImageBitmap() 以强制调整大小,但均无济于事。是否有地方可以获取 pending_bitmap 来进行处理,或者可以通过某种方式强制调用 onSizeChanged() 而不应用两次位图?

<小时/>

编辑:还尝试从重写的setImageBitmap()调用requestLayout()。好像什么也没做。

最佳答案

你假设使用

OnMesure()

方法。 View 类。

谢谢

关于java - 如何从重写的 setImageBitmap() 中获取 ImageView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680264/

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