Intereting Posts
Как я могу вызвать экран настроек Wi-Fi из своего приложения с помощью Android Ошибка: не удается изменить зависимости конфигурации «: приложение: _debugAnnotationProcessor» после того, как оно было разрешено Как изменить цвет акцента в оповещениях о материалах в Android? Что происходит за кулисами, когда я выполняю синхронизацию репо? Кнопка ActionBar Up и шаблон навигации Android: Пользовательская панель заголовка Как настроить (увеличить размер) флажка в Android APKtools (APK Studio) Не удалось декодировать файл arsc OnViewCreated – неправильное место для замены фрагмента? Местонахождение легенды Achartengine Как добавить навигационный ящик во все действия в приложении? Вызовите несколько AsyncTask за время, не работающее в Android Отсутствуют стрелки Android NumberPicker, DatePicker, TimePicker Восстановить пароль моего хранилища ключей Как удалить дублированный контакт из списка контактов в android

Когда андроид сначала выполняет макет?

Мне нужно подготовить некоторые объекты на основе первоначального расположения виджетов и представлений в моей деятельности. Я хотел бы сделать это на этапах инициализации, в идеале onCreate и onStart. Учитывая возможность изменений, которые происходят, когда мы не находимся на переднем плане, некоторые из них, возможно, должны произойти в onResume.

Поэтому я проверил, могу ли я измерить, как мои взгляды были изложены.

Log.d("MyApp", "w,h of X is " + findViewById(R.id.X).getWidth() + "," + findViewById(R.id.X).getHeight()); 

Я запускал это в onCreate, onStart и onResume. Каждый раз, когда я получаю 0,0 для ширины, высоты. Если я буду ждать onTouchEvent, я получу информацию о макете, поэтому макет будет выполнен к тому времени.

Я удивлен, что макет не установлен и окончателен к тому времени, когда я вижу onResume. Я ожидал, что виджеты будут уже выложены и готовы к тому, чтобы поиграть с ними.

Solutions Collecting From Web of "Когда андроид сначала выполняет макет?"

Макет выполняется по иерархии представлений по мере необходимости.

Когда ваше приложение onResume() , это будет через некоторое время после onResume() (когда ваше окно будет onResume() и помещено на экран).

Правильный способ узнать о действиях макета – через обратные вызовы различных View.onSizeChanged() иерархии – View.onSizeChanged() т. Д., Как View.onSizeChanged() в разделе «Макет» здесь :