以编程方式设置PercentRelativeLayout的widthPercent(具有固定的aspectRatio)不会正确更新高度

时间:2017-04-16 11:42:54

标签: android runtime android-percentrelativelayout

您可能也知道,您可以在代码中更改PercentRelativeLayout的widthPercent:

PercentRelativeLayout.LayoutParams params = ((PercentRelativeLayout.LayoutParams) view.getLayoutParams());
PercentLayoutHelper.PercentLayoutInfo paramsInfo = params.getPercentLayoutInfo();
paramsInfo.widthPercent = newWidthPercent; //e.g. change form 0.5 to 0.9
paramsInfo.aspectRatio = 1;

但是在运行时,您可以看到高度不会根据新的宽度百分比而改变(例如,由于纵横比等于1但高度保持不变,因此您希望宽度和高度相等)

那么,我们如何实现这一目标呢?

1 个答案:

答案 0 :(得分:0)

我在stackoverflow和google中搜索了很多但是找不到相似的问题和答案,因此我决定将其作为Q / A发布在其他面临同样问题的开发人员身上。 你应该设置另一个属性(如果设置widthPercent则为height,如果设置heightPercent则设置width),将params变量设置为 0(零)!这是完整的解决方案:

PercentRelativeLayout.LayoutParams params = ((PercentRelativeLayout.LayoutParams) view.getLayoutParams());
PercentLayoutHelper.PercentLayoutInfo paramsInfo = params.getPercentLayoutInfo();
paramsInfo.widthPercent = newWidthPercent;
paramsInfo.aspectRatio = 1;
params.height = 0;

它会像我们期望的那样更新高度!