1
我試圖通過堆砌幾個較小的佈局和視圖來建立複雜的佈局。例如,我們有一個自定義的基於矢量渲染的圖標,我們將其與一個TextView以及一些我們稱爲DecoratedIconTextView的類中的其他一些輔助對象一起顯示。如果子視圖的父母之一啓用了狀態更改,如何通知子視圖?
問題在於渲染。該圖標知道如何在正常和禁用狀態下呈現自己。但是,即使它的父DecoratingIconTextView被禁用,該圖標仍在報告它本身已啓用。
想法包括一些方式來詢問父鏈,看看他們中的任何一個是否報告爲禁用(如拉),如果是的話,對待自己就好像你被禁用。但是,該方法不允許更改父級的isEnabled屬性以傳播給所有子級(ala push)。
我也不確定如何監視isEnabled屬性的更改,因爲我沒有看到任何覆蓋。
那麼,如果一個孩子的父母的isEnabled狀態發生了變化,孩子該如何通知他?
但是,這將需要繼承層次結構中的每個控件!例如,如果我的孩子在LinearLayout中並且LinearLayout被設置爲禁用,我希望我的孩子能夠繪製一個禁用狀態。應該不需要子類化LinearLayout。是不是有一些你可以聽的狀態通知,所以你不必創建所有ViewGroup類的子類? – MarqueIV