我有一个RelativeLayout
(一个HorizontalScrollView
的直接孩子),它超出了屏幕范围,我已经动态地放置了一些视图。
为了捕获视图的一部分(作为位图),我执行以下操作:
v.layout(0, 0, cw, ch);
v.draw(canvas)
然后为了恢复原始边界(这是HSV的全宽),再次调用layout()
,但也可以滚动直到界限0-> cw 而不是fullWidth。
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();
但布局没有更新,直到我专注于另一个视图(点击另一个按钮/视图)。
答案 0 :(得分:1)
使用简单的v.requestLayout();
来自docs:
要启动布局,请致电requestLayout()。通常这种方法 当它认为不再适合时,就会被自己的观点所呼唤 在其目前的范围内。
进一步精彩的阅读:How Android Draws Views