Пользовательский FrameLayout не отображается в TabActivity - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть собственный класс FrameLayout, который выполняет некоторые пользовательские рисования для события OnSizeChanged.Это делается там, а не в событии OnDraw, чтобы избежать повторного входа и, следовательно, проблем с производительностью.Это прекрасно работает в одном приложении активности, но не работает в TabActivity.Действие на текущей вкладке отображается нормально, но действия на неактивных вкладках не отображаются. Здесь вы можете скачать пример проекта, воспроизводящего это.Проект HelloTabWidget, но также использует проект HelloAndroid.

Обнаружено, что событие onWindowVisibilityChanged может помочь, но необходимо найти подходящий размер для построения моего элемента управления.В приведенном ниже фрагменте кода мне нужен способ узнать размер контейнера в onWindowVisibilityChanged.

@Override
protected void onWindowVisibilityChanged(int visibility) {
    super.onWindowVisibilityChanged(visibility);

    int width = this.getWidth();
    int height = this.getHeight();

    drawContent(getCtxt(), width, height);
}

1 Ответ

0 голосов
/ 05 июля 2012

Решением было использование события OnDraw, выполняющего некоторый рефакторинг для компонента, и использование логического флага, чтобы определить, когда холст загрязнен, чтобы избежать ненужного повторного входа. SetWillNotDraw также должен быть установлен в false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...