我过去曾这样做过,我很沮丧,因为这种方法不像我期望的那样工作。我有一个图像,我想调整大小到特定尺寸,我使用下面的代码:
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
内设置的宽度和高度。我在这里做错了什么?
答案 0 :(得分:2)
由于您将snellen
的{{1}}投射到LayoutParams
,您的视图似乎可能是ConstraintLayout.LayoutParams
的孩子。
如果是这种情况,问题可能是视图的维度是由其约束集定义的,因此更改ConstraintLayout
和params.width
将无效。
检查视图的约束,确保它们没有确定视图的尺寸。
答案 1 :(得分:0)
尝试使用snellen.requestLayout()
我希望能帮到你