为什么我的 ImageView 不以编程方式更改其 ScaleType?

Why does NOT my ImageView change its ScaleType programmatically?

我有一个名为 "alumniImage"ImageView,我以编程方式将其设置为 CENTERCROPScaleType

但在应用程序中它似乎没有改变。

这是它的代码:

    LinearLayout.LayoutParams imageParams = new LinearLayout.LayoutParams(
(int) getResources().getDimension(R.dimen.survey_height), // 50dp
ViewGroup.LayoutParams.MATCH_PARENT);

    ImageView alumniImage = new ImageView(getContext()); //because I am in a fragment
    alumniImage.setLayoutParams(imageParams);
    alumniImage.setImageResource(R.drawable.alumni_survey);
    alumniImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
    alumniLayout.addView(alumniImage);

我尝试使用调试器,但没有任何改变。

这是一个屏幕截图:

为什么会这样?!

顺便说一句,我试图将 ImageView 放入 xml 文件中,但它运行良好。

提前致谢。

因为ImageView在你设置scaleType之前绘制了图像。所以,它使用默认 scaleType (FIT_CENTER),

setImageResource之前设置scaleType

alumniImage.setScaleType(ImageView.ScaleType.CENTER_CROP);
alumniImage.setImageResource(R.drawable.alumni_survey);

我建议你在 addView 方法中设置 LayoutParams

alumniLayout.addView(alumniImage, imageParams);

屏幕截图让我明白了发生了什么。

您的调试器的当前行是源代码的空行

每当我收到它时,就意味着我正在调试一个过时的 APK。源代码已更改,但 APK 尚未重建。

清理您的项目,重建所有内容,然后重试。你应该看到你所期望的。

哦,是的,如果您使用的是 Instant 运行,请将其关闭。当我更新任何东西时,那个东西从来没有注意到。