以编程方式更改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(尚未查看源代码)不同。