ViewGroup
中にいくつかのビューがあるカスタムがあります。
イベントに応答して、requestLayoutが呼び出され、OnLayout
一部のビューで新しいレイアウト位置が取得されます。
それらの1つはその位置を維持しますが、内部で再配置する必要があります。ただし、このビューのonlayoutメソッドは、レイアウト位置が変更されないため呼び出されません。requestLayout
、forceLayout
またはこのビューで電話をかけようとしてもinvalidate
機能しません。
私が見つけた唯一の汚いトリックは、レイアウトの変更を強制するためにその値の位置の一部を変更することですが、もっと良い方法があるはずだと思います。だから、今では私は次のような(恐ろしい)何かをします:
int patch = 0;
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) {
...
_myView.patchedLayout(patch);
_myview.layout(l1, t1 , r1, t1+patch);
patch = (patch+1) % 2;
...
}
より良い方法で同じ結果を得る方法はありますか?