Android - onGlobalLayout не вызывается ViewTreeObserver

У меня болит голова в текущем проекте Android. Я хочу обнаружить изменение текущей страницы. Например, есть TextView для отображения времени устройства, которое обновляется в секунду. Как обнаружить это изменение? Я много искал на SO (спасибо SO), но никто не работает для меня.

Больше информации: я не использую стандартную активность для создания страницы. Мой способ таков: все виджеты создаются в виде объекта View, который затем используется для создания объекта-контейнера. После этого я просто обрабатываю этот контейнер для периодического рисования на холсте с помощью функции обратного вызова VSYNC Choreographer.FrameCallback.

Действительно, это работает для рисования. Все в порядке. За исключением: я хочу рисовать холст только тогда, когда содержание страницы изменилось. Итак, вернемся к моему начальному вопросу, как обнаружить это "изменяющееся" событие? Я уверен, что есть какой-то обратный вызов для решения этой проблемы. Я использовал следующее решение, но onGlobalLayout не вызывается, когда текст textview изменился.

CanvasAppViewContainer container;//CanvasAppViewContainer extends AbsoluteLayout
LayoutInflater li =(LayoutInflater)getService().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    

View view = li.inflate(resourceId, null);//passed a correct the layout id
container = new CanvasAppViewContainer(getService(), view, getWidth(), getHeight(), getSurface());
rootView = (LinearLayout) findViewById(R.id.rootView); //root element of layout
rootView.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {
    @SuppressLint("NewApi")
    @Override
    public void onGlobalLayout() {
        Log.d("test", "onGlobalLayout");
    }
});

Кстати, даже если я зарегистрирую наблюдателя дерева представлений для textview, onGlobalLayout по-прежнему не вызывается.

Спасибо

1 ответ

onGlobalLayout() вызывается только при изменении макета. Когда вы хотите обнаружить изменение в тексте, используйте TextView.addTextChangedListener()

Другие вопросы по тегам