为什么 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.width
和 params.height
中设置的值。我在这里做错了什么?
尝试使用snellen.requestLayout()
希望对你有帮助
由于您将 snellen
的 LayoutParams
转换为 ConstraintLayout.LayoutParams
,因此您的视图很可能是 ConstraintLayout
.[=16= 的子视图]
如果是这种情况,问题可能在于您的视图的维度是由其约束集定义的,因此更改 params.width
和 params.height
将无效。
检查视图的约束并确保它们没有决定视图的尺寸。
我过去曾这样做过,但我很沮丧,因为这种方法并不像我预期的那样有效。我有一张图片,我想将其调整为特定尺寸,我正在使用以下代码:
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.requestLayout()
希望对你有帮助
由于您将 snellen
的 LayoutParams
转换为 ConstraintLayout.LayoutParams
,因此您的视图很可能是 ConstraintLayout
.[=16= 的子视图]
如果是这种情况,问题可能在于您的视图的维度是由其约束集定义的,因此更改 params.width
和 params.height
将无效。
检查视图的约束并确保它们没有决定视图的尺寸。