调用 setContentView() 后设置 window 布局
Setting window layout after calling setContentView()
我正在创建一个 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到消息队列中而不是直接调用呢?
谢谢!
设置内容视图只是将布局提供给 Android 框架。布局尚未完全配置。这不会发生,直到 Android 框架重新获得控制权(即:在下一个事件循环中)。在 onCreate()
方法结束之前不会发生这种情况。
通过将您的代码发布到 Handler
,您可以延迟该代码的执行,直到 Android 框架完全配置好布局。
我正在创建一个 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到消息队列中而不是直接调用呢? 谢谢!
设置内容视图只是将布局提供给 Android 框架。布局尚未完全配置。这不会发生,直到 Android 框架重新获得控制权(即:在下一个事件循环中)。在 onCreate()
方法结束之前不会发生这种情况。
通过将您的代码发布到 Handler
,您可以延迟该代码的执行,直到 Android 框架完全配置好布局。