Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式更改LayoutParams在Android中没有效果。为什么?_Android_Layout - Fatal编程技术网

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

以编程方式更改LayoutParams在Android中没有效果。为什么?,android,layout,Android,Layout,我有一个自定义视图,来自于按钮,我想在运行时相对于另一个视图定位它。因为当我的视图膨胀时,我还不知道其他视图的位置(因为布局尚未开始),所以我利用onSizeChanged处理程序来设置视图相对于其他视图的位置 在尺寸更改的中: LayoutParams lp = new LayoutParams(this.getMeasuredWidth(), this.getMeasuredHeight()); lp.leftMargin = x; lp.topMargin = y; this.setLay

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

在尺寸更改的

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

forceLayout();

然而,这没有任何效果。为什么会这样?

需要考虑的一些事情:

  • 您确定正在执行此代码吗
  • 您是否检查了
    hierarchyviewer
    中的UI,以查看是否设置了边距,但它们根本没有达到您期望的视觉效果
  • 您确定仅仅通过
    RelativeLayout
    不能更好地处理此问题吗
  • 您是否尝试过修改现有的
    LayoutParams
    而不是替换它

  • 你好,马克。1,2:是;3:不行,我与父FrameLayout合并;4:不,我试试看。观察:offsetTopAndBottom()和offsetLeftAndRight()做这项工作。这些方法的工作原理肯定与设置新的LayoutParams(尚未查看源代码)不同。