我有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方法。
答案 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();
更改布局参数后,您需要将其设置回来。