Java 如何从覆盖的setImageBitmap()获取ImageView的大小

Java 如何从覆盖的setImageBitmap()获取ImageView的大小,java,android,bitmap,imageview,overriding,Java,Android,Bitmap,Imageview,Overriding,我有一个ImageView的子类,它覆盖setImageBitmap来截取给定的位图,并填充它以适应视图的纵横比。为了做到这一点,我需要知道视图的大小,但是getWidth和getHeight在setImageBitmap期间都返回0 在看到onSizeChanged被正确的尺寸调用后,我尝试将处理延迟到那时: 私有位图挂起\u位图; @覆盖公共无效setImageBitmap位图b{ 如果getWidth==0 | | getHeight==0挂起_位图=b; else applyBitmap

我有一个ImageView的子类,它覆盖setImageBitmap来截取给定的位图,并填充它以适应视图的纵横比。为了做到这一点,我需要知道视图的大小,但是getWidth和getHeight在setImageBitmap期间都返回0

在看到onSizeChanged被正确的尺寸调用后,我尝试将处理延迟到那时:

私有位图挂起\u位图; @覆盖公共无效setImageBitmap位图b{ 如果getWidth==0 | | getHeight==0挂起_位图=b; else applyBitmap b; } @覆盖已更改大小的int w、int h、int old_w、int old_h上的公共无效{ 如果挂起\u位图!=null{ applyBitmap挂起\u位图; 挂起位图=空; } } 私有无效applyBitmap b{ //做一些需要getWidth和getHeight的事情 super.setimageb; } 但是,现在不会调用onSizeChanged,因为setImageBitmap期间没有任何更改

我曾尝试将null传递给super.setImageBitmap以强制调整大小,但均无效。是否有什么地方可以获取挂起的_位图来进行处理,或者有什么方法可以在不应用位图两次的情况下强制调用onSizeChanged

编辑:还尝试从覆盖的setImageBitmap调用requestLayout。似乎什么都没做。

你应该用

//when declaring vars
LinearLayout yourlayout;

//in oncreate
LinearLayout yourlayout=(LinearLayout) findViewById(R.id.yourlayoutid);


//on size changed
LayoutParams getlay =yourlayout.getLayoutParams();



    height =getlay.height;
width=getlay.width;
OnMesure()
方法。在课堂上看


Thanx

试过请求布局吗?@pskink:刚才是的。问题编辑。顺便问一下,你想要实现什么?也许有一个较短的轨迹?您应该尝试查看类的测量方法。希望有帮助。位图是通过drawBitmapMesh绘制的,以获得3D翻页效果。由于图像可能是不同的形状,它们需要填充到相同的纵横比,以防止应用于网格时拉伸。