2017-08-02 50 views
1

我已经完成了这个过去,我很沮丧,因为这种方法不像我期望的那样工作。我有我想要调整到特定尺寸的图像,我用下面的代码:为什么不是setLayoutParams更改我的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内部。我在这里做错了什么?

+0

看起来它应该工作,不是吗?看看[这个答案](https://stackoverflow.com/a/40028802/6287910)另一种方法来解决这个问题。 – Cheticamp

+1

因为'snellen'的父项看起来像是'ConstraintLayout',有没有可能这些约束是如此特殊,他们不允许你控制视图的大小? –

+0

@BenP。你是对的。我必须将我的形象设置为仅限于屏幕的一侧,而不是使用我创建的指南来约束各个方面。然后它能够​​调整图像大小。只是哇,我从未想过会成为一个问题。随时发表您的评论作为回答 – cjnash

回答

1

既然你铸造snellenLayoutParamsConstraintLayout.LayoutParams,它很可能是你的看法是ConstraintLayout的孩子。

如果是这种情况,问题可能是您的视图的尺寸是由其一组约束定义的,所以更改params.widthparams.height将不起作用。

检查您的视图的约束,并确保它们不确定视图的尺寸。

0

尝试使用snellen.requestLayout()我希望能够帮助您

+0

在哪里?在我的.post上方或上方调用getLayoutParams?在snellen.setLayoutParams(params)之后的 – cjnash

+0

; 但我检查你试图分配的值没有分配给Imageview –

+0

是的,只是试图添加它,它似乎没有做任何事情。谢谢 – cjnash

相关问题