青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大龍的博客

常用鏈接

統計

最新評論

由AlertDialog想到的PhoneWindow, Dialog的覆蓋問題

在同一個窗口中,可以同時有多個AlertDialog,但是他們之間相互覆蓋,最后show()的那個在最上面,Why?

代碼如下:

  1. new AlertDialog.Builder(SpinnerTestActivity.this).setTitle("One").setMessage("one")  
  2.                       .setNegativeButton("button", new DialogInterface.OnClickListener(){  
  3.                         public void onClick(DialogInterface dialoginterface, int i){  
  4.               
  5.                         }  
  6.                 }).show();  
  7.                   
  8. new AlertDialog.Builder(SpinnerTestActivity.this).setTitle("TWO").setMessage("Two")  
  9.                 .setNegativeButton("button", new DialogInterface.OnClickListener(){  
  10.                     public void onClick(DialogInterface dialoginterface, int j){  
  11.                     }  
  12.                 }).show();  


答 : 每一個AlertDialog都會新建一個Window(該Window不添加到原窗口中),在該新Window中,創建這個AlertDialog,然 后取出該窗口的decorView,并將其加入到原窗口中,此時原窗口中存在兩個decorView,此時新來的decorView就覆蓋掉原來的 decorView,顯示在UI 上,因此,最后加入的decorView顯示在最上面
分析:查看源碼,在Dialog.class中
  1. public void show() {  
  2.       if (mShowing) {  
  3.           if (mDecor != null) {  
  4.               mDecor.setVisibility(View.VISIBLE);  
  5.           }  
  6.           return;  
  7.       }  
  8.   
  9.       if (!mCreated) {  
  10.           dispatchOnCreate(null);  
  11.       }  
  12.   
  13.       onStart();  
  14.       mDecor = mWindow.getDecorView();  
  15.       WindowManager.LayoutParams l = mWindow.getAttributes();  
  16.       if ((l.softInputMode  
  17.               & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) == 0) {  
  18.           WindowManager.LayoutParams nl = new WindowManager.LayoutParams();  
  19.           nl.copyFrom(l);  
  20.           nl.softInputMode |=  
  21.                   WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;  
  22.           l = nl;  
  23.       }  
  24.   
  25.       try {  
  26.           mWindowManager.addView(mDecor, l);  
  27.           mShowing = true;  
  28.     
  29.           sendShowMessage();  
  30.       } finally {  
  31.       }  
  32.   }  

其中 mWindow 是在 構造函數 public Dialog(Context context, int theme) 中初始化 :

Window w = PolicyManager.makeNewWindow(mContext); 

 mWindow = w;

由此,在上面的show()代碼中,將從mWindow中的decorView加入到 原窗口中,覆蓋了原窗口中的decorView的顯示

本程序中,最后的顯示的窗口中,具有3個decorView(兩個存放Dialog, 一個存放原布局):mWindowManager - > mWindowManager - > mViews 



========================================================================================================================


在Hierarchy Viewer中,原先的窗口顯示的布局是:


其布局無關精要,主要有一個TextView,一個Spinner,一個 Button

show了AlertDialog之后,其布局為:

不難看出,原decorView被覆蓋了,顯示的是第二個Dialog

posted on 2013-01-13 04:03 大龍 閱讀(492) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美电影在线观看| 欧美三区在线| 亚洲欧美日韩一区二区在线| 久久99在线观看| 亚洲午夜电影网| 久久香蕉国产线看观看av| 亚洲影院一区| 欧美激情在线观看| 久久精品免费电影| 国产精品每日更新| 亚洲精品视频在线观看网站| 一区三区视频| 国产精品99久久久久久白浆小说| 国产亚洲一区二区三区| 在线一区二区三区四区五区| 日韩视频在线观看国产| 久久全国免费视频| 久久国产色av| 国产精品日韩高清| 亚洲六月丁香色婷婷综合久久| 亚洲国产精品成人综合色在线婷婷| 午夜精品视频一区| 性欧美xxxx视频在线观看| 欧美午夜不卡在线观看免费| 亚洲高清视频一区二区| 狠狠色丁香婷婷综合| 久久成人国产| 久久蜜桃香蕉精品一区二区三区| 国产视频欧美| 欧美影院久久久| 久久久欧美一区二区| 今天的高清视频免费播放成人 | 亚洲国产91精品在线观看| 一区二区亚洲精品| 久久夜色精品国产欧美乱极品| 久久艳片www.17c.com| 韩国在线一区| 久久亚洲国产精品日日av夜夜| 牛夜精品久久久久久久99黑人| 亚洲丁香婷深爱综合| 久久中文精品| 亚洲国产日韩美| 亚洲夜间福利| 国产精品一区二区视频| 午夜精品久久久久影视| 久久精品一级爱片| 亚洲大胆美女视频| 欧美精品七区| 亚洲一区影音先锋| 久久久人成影片一区二区三区| 亚洲二区在线观看| 欧美日本在线播放| 亚洲欧美精品在线| 蜜臀av国产精品久久久久| 亚洲精品一品区二品区三品区| 欧美日本二区| 亚洲欧美另类中文字幕| 欧美成人国产一区二区| 亚洲深夜av| 激情综合久久| 欧美日韩妖精视频| 久久精品2019中文字幕| 亚洲人精品午夜在线观看| 欧美亚洲视频| 亚洲精品一区二区三区婷婷月| 欧美性开放视频| 久久久久九九九九| 一区二区欧美视频| 毛片一区二区三区| 亚洲午夜电影网| 亚洲国产欧美在线人成| 国产精品久久999| 蜜桃视频一区| 欧美在线高清| aa日韩免费精品视频一| 欧美电影在线| 久久成人国产精品| 亚洲午夜精品在线| 91久久国产自产拍夜夜嗨| 国产精品―色哟哟| 欧美精品一区二区三区很污很色的 | 欧美性猛交一区二区三区精品| 久久精品一二三区| 亚洲视频日本| 亚洲激情国产精品| 久久五月激情| 久久精品国产久精国产思思| 亚洲视频在线一区| 亚洲伦理在线观看| 在线观看91精品国产入口| 国产精品视频一区二区高潮| 欧美美女bb生活片| 老司机一区二区三区| 欧美在线视频观看| 夜夜爽99久久国产综合精品女不卡| 免费在线欧美视频| 久久国产精彩视频| 香蕉成人啪国产精品视频综合网| 日韩视频中午一区| 亚洲精品1区2区| 在线观看一区| 今天的高清视频免费播放成人| 国产欧美日韩不卡| 欧美午夜免费电影| 欧美视频二区36p| 欧美日韩精品二区第二页| 欧美顶级少妇做爰| 麻豆精品一区二区综合av| 久久久久久久网| 久久精品一二三区| 久久青青草综合| 美日韩精品免费| 久久综合久久综合久久综合| 久久久久久久久一区二区| 久久青草欧美一区二区三区| 久久久另类综合| 老司机午夜精品| 欧美超级免费视 在线| 欧美激情中文字幕乱码免费| 欧美激情一区二区三区不卡| 欧美精品一卡二卡| 欧美手机在线视频| 国产精品自拍在线| 国产亚洲欧美色| 尤物网精品视频| 亚洲精品孕妇| 亚洲一区二区视频在线观看| 午夜伦欧美伦电影理论片| 欧美专区在线观看| 久久久久国产精品一区二区| 久久综合亚州| 亚洲激情一区| 亚洲自拍偷拍网址| 香港久久久电影| 久久久视频精品| 欧美大尺度在线观看| 欧美视频中文字幕在线| 国产亚洲精品美女| 亚洲国产精品第一区二区| av成人老司机| 亚洲欧美高清| 久久综合久久久| 亚洲激情一区| 午夜一级在线看亚洲| 久久人91精品久久久久久不卡| 欧美另类视频在线| 国产精品普通话对白| 在线精品国精品国产尤物884a| 亚洲精品日韩一| 香蕉久久国产| 亚洲第一网站| 亚洲一区二区三区在线视频| 久久久久国产精品www | 欧美精品福利在线| 国产精品亚洲人在线观看| 伊人久久噜噜噜躁狠狠躁| 亚洲午夜高清视频| 亚洲欧美一区二区三区极速播放| 99在线精品观看| 午夜国产精品视频| 免费看av成人| 国产精品美女999| 亚洲第一天堂无码专区| 亚洲综合成人在线| 亚洲国产欧美不卡在线观看| 亚洲婷婷综合久久一本伊一区| 久久免费视频在线观看| 国产精品毛片| 9人人澡人人爽人人精品| 久久九九99视频| av成人天堂| 欧美激情1区2区3区| 国产综合视频| 午夜在线视频观看日韩17c| 亚洲激情午夜| 欧美sm重口味系列视频在线观看| 国产精品一区二区你懂的| 一区二区三区四区蜜桃| 免费在线欧美黄色| 久久久成人精品| 国产日韩亚洲欧美综合| 亚洲你懂的在线视频| 亚洲电影一级黄| 久久久蜜臀国产一区二区| 国产精品专区一| 午夜精品久久久久久久99樱桃 | 亚洲日本在线观看| 老司机成人网| 在线日韩av| 蜜桃av一区| 久久久久久久综合| 国内一区二区三区| 久久这里有精品视频| 久久成人在线| 在线观看欧美日本| 欧美xart系列高清| 欧美a级理论片| 一区二区高清在线观看| 亚洲狼人综合| 国产精品扒开腿爽爽爽视频|