Настройка макета окна после вызова setContentView()
Я создаю мероприятие в формате диалога: оно охватывает не весь экран, а только его часть. То, что я сделал, было в методе onCreate() этого действия, после вызова setContentView() я вызываю:
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
И это не работает. Вместо этого мне нужно сделать следующее:
window.getDecorView().post(new Runnable() {
@Override
public void run() {
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
}
});
Опять же, это ПОСЛЕ вызова setContentView(). Почему я должен поместить его в очередь сообщений, а не вызывать его напрямую? Спасибо!
1 ответ
Настройка представления контента просто дает макет для платформы Android. Макет еще не полностью настроен. Этого не произойдет, пока платформа Android не получит контроль (т.е. в следующем цикле событий). Этого не произойдет, пока onCreate()
метод заканчивается.
Разместив свой код на Handler
вы откладываете выполнение этого кода до тех пор, пока платформа Android полностью не настроит макет.