布局(在 HorizontalScrollView 中)未在具有不同参数的第二个连续布局()上更新
Layout (in HorizontalScrollView) not getting updated on 2nd consecutive layout() with different params
我有一个 RelativeLayout
(HorizontalScrollView
的直接子代),它延伸到屏幕边界之外,我在其中动态放置了一些视图。
为了捕获视图的一部分(作为位图),我执行以下操作:
v.layout(0, 0, cw, ch);
v.draw(canvas)
然后为了恢复原始边界(即 HSV 的全宽),再次调用 layout()
,但也可以滚动到 边界 0->cw 而不是全宽。
v.layout(0, 0, fullWidth, fullHeight);
v.invalidate();
我已经尝试了以下所有方法,并将它们的所有组合作为一种绝望的措施:
v.getParent().invalidateChild(v, new Rect(0, 0, width, height));
((Activity)v.getContext()).getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
v.forceLayout();
但布局不会更新,直到我关注另一个视图(单击另一个 button/view)。
使用简单的 a v.requestLayout();
来自docs:
To initiate a layout, call requestLayout(). This method is typically
called by a view on itself when it believes that is can no longer fit
within its current bounds.
进一步阅读:How Android Draws Views
我有一个 RelativeLayout
(HorizontalScrollView
的直接子代),它延伸到屏幕边界之外,我在其中动态放置了一些视图。
为了捕获视图的一部分(作为位图),我执行以下操作:
v.layout(0, 0, cw, ch);
v.draw(canvas)
然后为了恢复原始边界(即 HSV 的全宽),再次调用 layout()
,但也可以滚动到 边界 0->cw 而不是全宽。
v.layout(0, 0, fullWidth, fullHeight);
v.invalidate();
我已经尝试了以下所有方法,并将它们的所有组合作为一种绝望的措施:
v.getParent().invalidateChild(v, new Rect(0, 0, width, height));
((Activity)v.getContext()).getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
v.forceLayout();
但布局不会更新,直到我关注另一个视图(单击另一个 button/view)。
使用简单的 a v.requestLayout();
来自docs:
To initiate a layout, call requestLayout(). This method is typically called by a view on itself when it believes that is can no longer fit within its current bounds.
进一步阅读:How Android Draws Views