注意:實際問題位於What my questions are
部分。其他部分用於更好地概述問題。如何爲Android視圖實現裝飾模式
TASK
我想用Decorator design pattern裝飾Android的看法。對於我的問題,我將以裝飾ViewPager
爲例,但我相信這個解決方案將更加通用。
爲什麼需要IT
我希望能在我的不同解決方案的標準視圖重用不同的擴充。例如。現在我有定時器切換ViewPager
和ViewPager
,當用戶到達終點時通知我。有了這個解決方案,我的目標是在我的下一個解決方案中添加自動切換通知ViewPager
(即結合我的當前擴展)。裝飾模式正是爲了這一點。
正是我現在的做法是
- 我已經在
ViewPagerDecorator
包裹目標
ViewPager
我也做了裝飾的需要的擴展 -AutoSwitchViewPager
和NotifyOutOfBoundsViewPager
(基於this)。現在我甚至可以做new AutoSwitchViewPager(new NotifyOutOfBoundsViewPager(viewPager))
。- 現在我想弄清楚如何將這個運行時創建的視圖放置在佈局中。我目前正試圖弄清楚,如果我可以從佈局將其xml屬性傳播到裝飾視圖中替換普通的
ViewPager
。
WHAT我的問題是
- 有一種方法在XML複製從佈局定義視圖屬性運行時構建一個(
LayoutParameters
至少) - 一種替代將使用
ViewStub
,但我沒有找到一種方式來充滿ViewStub
完全運行時構造(不使用xml佈局)的東西。有沒有這樣的方式?
有什麼我讀
我已經對這些相關資源跌跌撞撞:
- Decorating Android views - 這不完全是裝飾在這個意義上的裝飾不會訂閱意見到視圖的不同事件。裝飾需要通過特殊的觸發方法來觸發。然而,我所要的裝飾品確實需要充當裝飾類的完整延伸。
- Decorator pattern Android - 這裏的裝飾再次通過特殊的方法
- Decorating an Android activity觸發 - 所有我有ComonsWare尊重我很遠離質疑他的說法。另一方面,我相信Android中的視圖允許您對活動進行更多的運行時修改,所以我仍然認爲我的看法是合理的。
讀約LayoutImflater.setFactory/LayoutImflater.setFactory2 – pskink 2014-11-06 08:35:58
LayoutInflater.Factory2是更好,因爲它提供了額外的'查看parent'參數,但它需要API 11+ – pskink 2014-11-06 10:22:08
只是忘了補充一點,在你的活動實施LayoutInflater.Factory2時,請確保您致電超級實施 – pskink 2014-11-06 17:11:32