принудительно использовать onLayout в подпредставлении, размеры которого не меняются

У меня есть 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;
       ...
    }       

Есть ли способ получить тот же результат лучше?

6
задан Luis 5 July 2012 в 11:34
поделиться