我对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始终无效。这会在以后引起一些麻烦。
也许有人会建议我如何避免这种情况?
答案 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);