FrameLayout和setLayoutParams invalides我的视图

时间:2011-07-20 13:43:54

标签: java android graphics canvas

我对Canvas的实现有一个奇怪的行为。

我正在做简单的Canvas,在它上画一些东西,一切都很好。但是,我把Button放在那个View(在FrameLayout中),就像这样:

FrameLayout frameLayout = new FrameLayout(this);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 0);
button.setLayoutParams(layoutParams);

调用'setLayoutParams'时,整个View被重绘/无效。我不明白为什么,但是因为这个我有问题。 第一次调用不是问题,但是当调用'setLayoutParams'时,View始终无效。这会在以后引起一些麻烦。

也许有人会建议我如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

如果您尝试移动按钮,则应将代码更改为:

MarginLayoutParams params = (MarginLayoutParams)button.getLayoutParams();
params.setMargins(10, 10, 10, 0);
button.setLayoutParams(params);

如果您尝试移动框架布局,请将其更改为:

FrameLayout frameLayout = new FrameLayout(this);
MarginLayoutParams layoutParams = (MarginLayoutParams)frameLayout.getLayoutParams();
layoutParams.setMargins(10, 10, 10, 0);
frameLayout.setLayoutParams(layoutParams);