2016-08-05 10 views
2

私は実行時に画面上のコントロールをレイアウトするアプリを持っており、幅がWRAP_CONTENTのビューでmeasureを呼び出す各コントロールを通過します。メジャーキャッシュをクリアする方法

ビューのステンシル版を表示するためにビューにデータが設定される前に、実際のデータがビューに設定された後に、これが実行されます。

問題は、同じ入力で測定値を2回コールするため、測定値キャッシュに2回目に達し、コントロールのデータが変更されてからビューの実際の測定値が変更されても再測定しないという問題があります。

2回目の呼び出しで強制的に再測定する方法はありますか?

+0

は私がすることで、この周りに取り組んできましたonMeasureを呼び出すmeasureActuallyメソッドを使用してサブクラスを作成します(onMeasureは保護されているため必要です)。明らかに、私はキャッシュをクリアすることも好むでしょう: - / –

答えて

0

私はキャッシュをクリアする方法を発見していないが、値のいずれかが指定されていない場合、それはキャッシュの不一致のように見えるが、これに類似した強制することができます:

int fakeSpace = (int) (Math.random() * 9999999); 
int spec = View.MeasureSpec.makeMeasureSpec(fakeSpace, View.MeasureSpec.UNSPECIFIED); 
view.measure(spec, spec); 
関連する問題