改变观点的立场

时间:2015-07-22 07:13:46

标签: android android-view

我使用此代码更改视图的位置

  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();

提前致谢

2 个答案:

答案 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();

这是官方文件的简要说明:

  

设置此视图相对于其父级的顶部位置。 此方法   意图由布局系统调用,通常不应该   否则称为,因为该属性可能随时被更改   布局。

  

孩子的上边距(以像素为单位)。保证金值应该是   正。重新分配新的后调用setLayoutParams(LayoutParams)   这个领域的价值。