以编程方式更改 LayoutParams 在 Android 中没有任何效果。为什么?

Mat*_*ias 5 layout android

我有一个源自 的自定义视图Button,我想在运行时相对于另一个视图定位它。因为当我的视图膨胀时我还不知道其他视图的位置(因为布局尚未开始),所以我利用处理程序onSizeChanged来设置我的视图相对于其他视图的位置。

onSizeChanged

LayoutParams lp = new LayoutParams(this.getMeasuredWidth(), this.getMeasuredHeight());
lp.leftMargin = x;
lp.topMargin = y;
this.setLayoutParams(lp);

forceLayout();
Run Code Online (Sandbox Code Playgroud)

然而,这没有任何效果。怎么会?

Com*_*are 4

需要考虑的一些事项:

  1. 你确定这段代码正在执行吗?
  2. 您是否检查过 UI 以hierarchyviewer查看是否设置了边距,但它们根本没有达到您期望的视觉效果?
  3. 您确定仅通过 来处理这不是更好吗RelativeLayout
  4. 您是否尝试过修改现有的LayoutParams而不是替换它?