布局(在 Horizo​​ntalScrollView 中)未在具有不同参数的第二个连续布局()上更新

Layout (in HorizontalScrollView) not getting updated on 2nd consecutive layout() with different params

我有一个 RelativeLayoutHorizontalScrollView 的直接子代),它延伸到屏幕边界之外,我在其中动态放置了一些视图。

为了捕获视图的一部分(作为位图),我执行以下操作:

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