Java FrameLayout和setLayoutParams使我的视图无效
我有一个奇怪的行为与我的画布实现 我在做简单的画布,在上面画些东西,一切都很好。然后,我将按钮放在该视图上(在框架布局中),如下所示:Java FrameLayout和setLayoutParams使我的视图无效,java,android,graphics,canvas,Java,Android,Graphics,Canvas,我有一个奇怪的行为与我的画布实现 我在做简单的画布,在上面画些东西,一切都很好。然后,我将按钮放在该视图上(在框架布局中),如下所示: FrameLayout frameLayout = new FrameLayout(this); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.W
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”时,整个视图将被重新绘制/无效。我不明白为什么,但我也因此遇到了问题。
第一次调用不是问题,但是调用“setLayoutParams”时,视图始终无效。这会在以后引起一些麻烦
也许有人会给我一些如何避免这种情况的建议?如果您试图移动按钮,您应该将代码更改为:
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);
如果您试图移动按钮,则应将代码更改为:
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);
视觉更改(如setLayoutParams)应使视图层次结构无效。告诉我们您对特定层次结构的了解,您认为不应该(或不需要)发生失效。视觉更改(如setLayoutParams)会使视图层次结构失效。请告诉我们您对您的特定层次结构的了解,您认为不应该(或不需要)发生失效。