2017-08-01 1 views
1

私はいくつかの小さなレイアウトとビューを堆肥化して複雑なレイアウトを構築しようとしています。たとえば、カスタムのベクターレンダリングベースのアイコンがTextViewと、DecoratedIconTextViewというクラスの他のいくつかの付属物とともに表示されます。親ビューの1つが有効になったときに子ビューにどのように通知することができますか?

問題はレンダリングにあります。アイコンは、通常の状態と無効な状態で自身をレンダリングする方法を知っています。ただし、親DecoratedIconTextViewが無効になっている場合でも、アイコンはそれ自体が有効であることを報告しています。

これらのうちのどれかが無効(ala pull)として報告されているかどうかを調べるために、親チェーンを調べる方法が含まれています。しかし、このアプローチでは、親のisEnabledプロパティの変更がすべての子(ala push)に伝播することはできません。

オーバーライドが表示されないため、isEnabledプロパティの変更を監視する方法についてもわかりません。

親のisEnabled状態が変更されたときに、どのように通知されるのですか?

答えて

0

ビューを有効または無効にすると、ビューは無効になります。したがって、onDraw()メソッドが呼び出されます。任意のビューを拡張してonDraw()メソッドをオーバーライドし、ビューの状態が変更された場合にシステムに通知できます。

+0

しかし、それは階層内のすべてのコントロールをサブクラス化する必要があります。例えば、私の子供がLinearLayoutにあり、LinearLayoutがdisabledに設定されている場合、私は子供が無効状態で描画できるようにします。 LinearLayoutをサブクラス化する必要はありません。あなたが聞くことができるすべてのViewGroupクラスのサブクラスを作成する必要がないという状態通知はありませんか? – MarqueIV

関連する問題