我对Android很陌生,在尝试理解对话框的工作方式时,我有以下问题.对于Activity,一旦通过setContentView(View)设置了View Hierarchy,除非重新创建活动,否则无法更改View层次结构.这就是在旋转设备时重新创建活动的原因,以便可以使用新的View层次结构布局.但是假设上述陈述是正确的,那么在创建它们时,Dialog如何适应"活动"视图层次结构?它们只是浮动在Activity窗口上方,在Activities视图层次结构中没有明显的空间?虽然它们肯定以某种方式与活动相关联,但是getActivity()方法返回一个有效的Activity实例.任何指示或澄清将真的很感激.
对话框实际上不是活动视图层次结构的一部分.对话框通过添加WindowManager.
检查源代码Dialog.当对话框被实例化时,它从上下文获得对WindowManager的引用,并初始化一个新窗口.
mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
Window w = PolicyManager.makeNewWindow(mContext);
Run Code Online (Sandbox Code Playgroud)
然后,当你show()对话时:
WindowManager.LayoutParams l = mWindow.getAttributes();
try {
mWindowManager.addView(mDecor, l);
mShowing = true;
Run Code Online (Sandbox Code Playgroud)
当您致电时setContentView(),您提供的视图将附加到活动的默认窗口.当您调用时Dialog.show(),对话框的视图将附加到同一显示的不同窗口.这就是为什么它们都显示而不是实际上属于同一视图层次结构的原因.
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |