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

时间:2016-03-03 18:45:59

标签: android android-layout horizontalscrollview

我有一个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();

但布局没有更新,直到我专注于另一个视图(点击另一个按钮/视图)。

1 个答案:

答案 0 :(得分:1)

使用简单的v.requestLayout();

来自docs

  

要启动布局,请致电requestLayout()。通常这种方法   当它认为不再适合时,就会被自己的观点所呼唤   在其目前的范围内。

进一步精彩的阅读:How Android Draws Views