У меня головная боль в текущем проекте Android. Я хочу определить изменение текущей страницы. Например, есть TextView для отображения времени устройства, которое обновляется в секунду. Как определить это изменение? Я много искал на SO (спасибо ТАК), но никто не работает для меня.Android - onGlobalLayout не вызывается ViewTreeObserver
Дополнительная информация: Я не использую стандартную активность для создания страницы. Мой путь: Все виджеты создаются в объект View, который затем используется для создания объекта-контейнера. После этого я просто обрабатываю этот контейнер, чтобы рисовать на холсте с помощью VSYNC обратный вызов Choreographer.FrameCallback периодически.
Действительно, он работает, чтобы нарисовать. Все в порядке. За исключением: Я хочу нарисовать холст только при изменении содержимого страницы. Итак, вернемся к моему начальному вопросу, как обнаружить это «меняющееся» событие? Я уверен, что есть какой-то обратный вызов для решения этой проблемы. Я использовал следующее решение, но onGlobalLayout не вызывается при изменении текста в тексте.
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 до сих пор не называется.
Благодаря
Спасибо. Фактически, если наблюдатель дерева просмотра регистров для текстового просмотра, когда текст изменен, onGlobalLayout() также вызывается при нормальной работе. – Vincent
Возможно, изменение текста заставляет TextView изменять его размер, который вызывает OnGlobalLayout() в вашей «нормальной» активности? – murf
Я просто повторяю один и тот же текст. – Vincent