2016-03-03 37 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

相關問題