我有这个 XML 代码:
<LinearLayout
android:id="@+id/linearLayoutInner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@layout/gallery_image_background"
/>
然后这段代码:
LinearLayout linearLayoutInner = (LinearLayout) findViewById(R.id.linearLayoutInner);
ImageView imageView = new ImageView(thisActivityContext);
imageView.setImageResource(R.drawable.example);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
imageView.setLayoutParams(lp);
linearLayoutInner.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
linearLayoutInner.addView(imageView);
然后我调用一个自己的函数,该函数旨在缩放位图图像,直到其中一侧到达边缘(即,如果原始位图的宽度是高的两倍,它将保持图像视图内的比例,这显然不是任何 scaletype 设置都支持):
SharedCode.sharedUtilScaleImage(imageView);
问题来了。该函数需要知道包含可绘制位图的视图的大小。如果 imageView 行为正确,它应该使用MATCH_PARENT并因此给出 linearLayoutInner 的宽度/高度。但是,以下代码返回零:
int heightParent = max(imageView.getLayoutParams().height, imageView.getHeight());
int widthParent = max(imageView.getLayoutParams().width, imageView.getWidth());
我该如何解决这个问题?为什么我返回 0 而不是正确的高度/宽度?