【发布时间】:2014-12-11 10:50:19
【问题描述】:
我有一个视图(包含一个广告),我需要在某个时间点(加载广告后)缩放以适应屏幕宽度。所以我有一个方法setHeight(myView) 计算给定屏幕宽度的正确高度并相应地更改视图的 LayoutParams。代码的关键部分是这样的:
LayoutParams params = myView.getLayoutParams();
int width = myView.getWidth();
if (params != null && width > 0) {
params.height = (int) Math.round(ratio * width);
}
这似乎在大多数情况下都有效,但有时视图没有缩放。如果我在底部添加以下行,它似乎只能始终如一地工作:
myView.setLayoutParams(params);
这似乎也很有意义,因为 Android 视图在其 setLayoutParams() 方法中调用 requestLayout()。相反,我认为公共字段 (params.height) 的更改不会触发布局更改。
另一方面,我反复在网上找到教程,其中参数只是简单地更改,然后不再设置为视图。
所以,我的问题是:如果要在更改 LayoutParams 的属性后立即更新布局,我需要再次调用setLayoutParams,这是否正确?并且仅仅更改属性只会在稍后从其他地方触发布局更改时导致布局更改?
【问题讨论】:
标签: android layoutparams