如何在更改视图大小上更改LayoutParams

时间:2014-01-08 18:49:17

标签: android view

我有ImageView。我在设置新位图时更改了ImageVew的边距和大小。例如,用户单击按钮,我将位图设置为ImageView并更改参数(这是我自己视图中的代码):

RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) getLayoutParams();
p.leftMargin = (int) ((pw - lw) / 2f);
_topMargin = (int) ((ph - lh) / 2f);
lp.topMargin = _topMargin;
lp.width = lw;
lp.height = lh;
requestLayout();

所有工作。但是我想要改变参数,如果改变我的ImageView的父视图大小。如果我尝试使用来自此event的更改参数的代码 - 没有任何东西(ImageView不会更改参数)。

我如何解决这个问题?

我现在看到一种方式:在更改父级大小时,我不更改ImageView参数,只设置一些内部布尔标志。完成父改变后,我改变了我的ImageView参数。但我不知道,我需要观看什么父母事件,之后我可以改变我的ImageView参数。

我的解决方案。

我使用this方法。

1 个答案:

答案 0 :(得分:1)

RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) getLayoutParams();
lp.leftMargin = (int) ((pw - lw) / 2f);
_topMargin = (int) ((ph - lh) / 2f);
lp.topMargin = _topMargin;
lp.width = lw;
lp.height = lh;
setLayoutParams(lp);//<---set layout params
requestLayout();

更改布局参数后,您需要将其设置回来。