我使用此代码更改视图的位置
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)myview.getLayoutParams();
params.topMargin = topmargin;
params.leftMargin = leftmargin;
myview.setLayoutParams(params);
并没有任何改变。但是当我使用这段代码时
myview.setTop(topmargin);
myview.setLeft(leftmargin);
它会工作。现在我想知道我的第一个代码出了什么问题?
因为在互联网上有这么多人建议改变观点位置的第一个代码。
修改
此代码也不起作用
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)myview.getLayoutParams();
params.setMargins(100,100,0,0);
myview.setLayoutParams(params);
myview.requestLayout();
提前致谢
答案 0 :(得分:0)
尝试在myview.requestLayout();
myview.setLayoutParams(params);
<强>更新强>
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)myview.getLayoutParams();
params.setMargins(left,top, right,bottom);
myview.setLayoutParams(params);
myview.requestLayout();
答案 1 :(得分:0)
更新布局参数后需要调用requestLayout()
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)myview.getLayoutParams();
params.topMargin = topmargin;
params.leftMargin = leftmargin;
myview.setLayoutParams(params);
myview.requestLayout();
这是官方文件的简要说明:
.setLeft()
相同)设置此视图相对于其父级的顶部位置。 此方法 意图由布局系统调用,通常不应该 否则称为,因为该属性可能随时被更改 布局。
leftMargin
相同)孩子的上边距(以像素为单位)。保证金值应该是 正。重新分配新的后调用setLayoutParams(LayoutParams) 这个领域的价值。