我正在创建一个对话框格式的 Activity :它不会覆盖整个屏幕,而只会覆盖其中的一部分。我所做的是在这个 Activity 的 onCreate() 方法中,在调用 setContentView() 之后,我调用:
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
而且它不起作用。我需要执行以下操作才能使其正常工作:
window.getDecorView().post(new Runnable() {
@Override
public void run() {
window.setLayout(windowWidthInDp, LayoutParams.WRAP_CONTENT);
}
});
同样,这是在调用 setContentView() 之后。 为什么一定要pose到消息队列中而不是直接调用呢? 谢谢!
最佳答案
设置内容 View 只是将布局交给 Android 框架。布局尚未完全配置。这不会发生,直到 Android 框架重新获得控制权(即:在下一个事件循环中)。在 onCreate()
方法结束之前不会发生这种情况。
通过将代码发布到 Handler
,您可以延迟执行该代码,直到 Android 框架完全配置好布局。
关于android - 调用 setContentView() 后设置窗口布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066701/