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

时间:2017-08-02 19:58:29

标签: android imageview layoutparams

我过去曾这样做过,我很沮丧,因为这种方法不像我期望的那样工作。我有一个图像,我想调整大小到特定尺寸,我使用下面的代码:

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内设置的宽度和高度。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

由于您将snellen的{​​{1}}投射到LayoutParams,您的视图似乎可能是ConstraintLayout.LayoutParams的孩子。

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

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

答案 1 :(得分:0)

尝试使用snellen.requestLayout()我希望能帮到你