У меня есть Custom ViewGroup
с некоторыми представлениями внутри.
В ответ на событие вызывается requestLayout и в OnLayout
некоторые представления будут получить новую позицию макета.
Один из них сохраняет свое положение, но его нужно переставить внутри. Однако метод 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;
...
}
Есть ли способ получить тот же результат лучше?