2016-03-03 45 views
0

我有一个RelativeLayoutHorizontalScrollView的直接孩子),它延伸到屏幕边界之外,我在其中动态地放置了一些视图。布局(在Horizo​​ntalScrollView中)没有在第二个连续布局()上更新不同的参数

为了捕捉所述图的一部分(作为位图),I执行以下操作:

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

尝试一个简单的'v.requestLayout();' – petey

+0

哇...非常感谢! :) 我很惊讶,我没有尝试它。 –

回答

1

使用简单的一个v.requestLayout();

docs

要启动一个布局,调用requestLayout()。当它认为在其当前范围内不再适合 时,该方法通常由自身的视图调用 。

而且很大阅读:How Android Draws Views