为什么 setLayoutParams 不改变我的 ImageView 的大小?

Why isn't setLayoutParams changing the size of my ImageView?

我过去曾这样做过,但我很沮丧,因为这种方法并不像我预期的那样有效。我有一张图片,我想将其调整为特定尺寸,我正在使用以下代码:

snellen.post(new Runnable() {
        @Override
        public void run() {
            ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) snellen.getLayoutParams();
            params.width = (int)(converted*WIDTH_RATIO);
            params.height = (int)(converted*HEIGHT_RATIO);

            snellen.setLayoutParams(params);

            System.out.println("########################################################################### SNELLEN CHART WIDTH: : " + snellen.getWidth());
            System.out.println("########################################################################### SNELLEN CHART HEIGHT: : " + snellen.getHeight());
        }
    });

我已经检查了 (converted*WIDTH_RATIO)(converted*HEIGHT_RATIO) 是什么,它们都在 100 左右。我把它放在一个处理程序中,这样我就可以得到正确的 getLayoutParams() 因为我过去遇到过这个问题。

问题是,当我打印出宽度和高度时,它们不是我在 params.widthparams.height 中设置的值。我在这里做错了什么?

尝试使用snellen.requestLayout()希望对你有帮助

由于您将 snellenLayoutParams 转换为 ConstraintLayout.LayoutParams,因此您的视图很可能是 ConstraintLayout.[=16= 的子视图]

如果是这种情况,问题可能在于您的视图的维度是由其约束集定义的,因此更改 params.widthparams.height 将无效。

检查视图的约束并确保它们没有决定视图的尺寸。