为什么不是setLayoutParams更改我的ImageView的大小?
问题描述:
我已经完成了这个过去,我很沮丧,因为这种方法不像我期望的那样工作。我有我想要调整到特定尺寸的图像,我用下面的代码:为什么不是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.width
和params.height
内部。我在这里做错了什么?
答
既然你铸造snellen
的LayoutParams
到ConstraintLayout.LayoutParams
,它很可能是你的看法是ConstraintLayout
的孩子。
如果是这种情况,问题可能是您的视图的尺寸是由其一组约束定义的,所以更改params.width
和params.height
将不起作用。
检查您的视图的约束,并确保它们不确定视图的尺寸。
看起来它应该工作,不是吗?看看[这个答案](https://*.com/a/40028802/6287910)另一种方法来解决这个问题。 – Cheticamp
因为'snellen'的父项看起来像是'ConstraintLayout',有没有可能这些约束是如此特殊,他们不允许你控制视图的大小? –
@BenP。你是对的。我必须将我的形象设置为仅限于屏幕的一侧,而不是使用我创建的指南来约束各个方面。然后它能够调整图像大小。只是哇,我从未想过会成为一个问题。随时发表您的评论作为回答 – cjnash