【发布时间】:2014-05-09 19:06:29
【问题描述】:
我在指定相对布局的高度时遇到问题。据我了解,这两个代码块应该是等价的(myLayout是我在XML中定义的RelativeLayout,初始高度为“0dp”,它的父级也是RelativeLayout):
第 1 块:
RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams)myLayout.getLayoutParams();
p.height = (int)(35*scale);
myLayout.setLayoutParams(p);
myLayout.invalidate();
第 2 块:
RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams)myLayout.getLayoutParams();
RelativeLayout.LayoutParams newP = new RelativeLayout.LayoutParams(p.width, (int)(35*scale));
myLayout.setLayoutParams(newP);
myLayout.invalidate();
在我的例子中,比例是 2。 因此,我希望 myLayout 在执行这些块中的任何一个后具有 70 的高度,并且我希望它在我调用 myLayout.getHeight() 时返回该高度。另外,我希望 myLayout 占据一个高度为 70 的矩形及其以前的宽度(恰好是 match_parent)。
但是当我运行代码时,第一个块不会改变 myLayout 在屏幕上的高度,也不会改变 myLayout.getHeight() 的返回值。然而,它确实改变了 myLayout.getLayoutParams().height。
现在第二个块确实可以工作,尽管我必须运行它两次(!?)才能使更改生效。我在这里严重不知所措,我在文档中找不到与此密切相关的任何内容。
当我昨天出发时,我认为这将是一项容易的任务,但现在我质疑我的理智等等。有什么想法吗?
【问题讨论】:
标签: android android-relativelayout layoutparams