Ответ 1
Commonsware прав, не объясняя, что вы пытаетесь сделать и почему, невозможно ответить на ваш вопрос, и я подозреваю, что с деталями вы, вероятно, думаете об этом неправильно.
Тем не менее, у меня есть код, в котором мне нужно было сделать очень фанк-макет после того, как все было измерено.
Я мог бы расширить каждый из классов вида в макете и переопределить onMeasure()
, но это было бы большой работой. Итак, я закончил это. Не очень, но он работает.
mainMenuLayout - это макет, в котором мне нужно было напугать. Обратный вызов onGlobalLayout
вызывается, когда макет завершает рисование. Utils.setTitleText()
- это место, где происходит funkiness, и когда я передаю mainMenuLayout, он имеет доступ к положению и размеру всех дочерних представлений.
mainMenuLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// only want to do this once
mainMenuLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
// set the menu title, the empty string check prevents sub-classes
// from blanking out the title - which they shouldn't but belt and braces!
if (!titleText.equals("")){
Utils.setTitleText(_context,mainMenuLayout,titleText);
}
}
});