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

大龍的博客

常用鏈接

統(tǒng)計(jì)

最新評(píng)論

由AlertDialog想到的PhoneWindow, Dialog的覆蓋問(wèn)題

在同一個(gè)窗口中,可以同時(shí)有多個(gè)AlertDialog,但是他們之間相互覆蓋,最后show()的那個(gè)在最上面,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();  


答 : 每一個(gè)AlertDialog都會(huì)新建一個(gè)Window(該Window不添加到原窗口中),在該新Window中,創(chuàng)建這個(gè)AlertDialog,然 后取出該窗口的decorView,并將其加入到原窗口中,此時(shí)原窗口中存在兩個(gè)decorView,此時(shí)新來(lái)的decorView就覆蓋掉原來(lái)的 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 是在 構(gòu)造函數(shù) public Dialog(Context context, int theme) 中初始化 :

Window w = PolicyManager.makeNewWindow(mContext); 

 mWindow = w;

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

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



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


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


其布局無(wú)關(guān)精要,主要有一個(gè)TextView,一個(gè)Spinner,一個(gè) Button

show了AlertDialog之后,其布局為:

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

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   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>
            亚洲欧美国产va在线影院| 亚洲一区免费视频| 国产一区自拍视频| 亚洲午夜女主播在线直播| 亚洲欧洲一区| 久久综合狠狠综合久久激情| 亚欧美中日韩视频| 欧美网站在线观看| 亚洲乱码国产乱码精品精天堂 | 一区二区三区精品视频| 久久蜜桃精品| 麻豆精品视频| 一区二区三区在线高清| 香蕉久久a毛片| 久久精品二区三区| 国产视频自拍一区| 欧美一区二区在线观看| 久久国产精品一区二区三区四区| 国产精品丝袜xxxxxxx| 一本久久知道综合久久| 亚洲欧美成aⅴ人在线观看| 欧美成人午夜激情在线| 国产日韩欧美二区| 亚洲欧美日韩成人高清在线一区| 亚洲一区在线直播| 欧美午夜精品久久久久久浪潮| 亚洲国产精品va在线看黑人| 亚洲国产1区| 免费观看久久久4p| 亚洲黄色有码视频| 一区二区三区高清视频在线观看| 欧美日韩视频专区在线播放 | 性高湖久久久久久久久| 国产精品第13页| 亚洲在线电影| 久久精品视频99| 雨宫琴音一区二区在线| 麻豆成人在线播放| 亚洲免费高清| 欧美在线网址| 亚洲国产成人精品久久久国产成人一区 | 欧美成人综合一区| 日韩午夜免费视频| 国产精品激情电影| 久久国产高清| 亚洲激情午夜| 亚洲一区久久久| 国产亚洲欧洲997久久综合| 久久久久这里只有精品| 欧美电影在线观看完整版| 亚洲人成网站在线观看播放| 欧美日韩一区二区在线观看| 亚洲欧美精品suv| 久久综合网hezyo| 亚洲精品久久久久久久久| 欧美日韩一区二区在线视频| 亚洲欧美日韩在线不卡| 美腿丝袜亚洲色图| 亚洲视频香蕉人妖| 国产字幕视频一区二区| 免费久久久一本精品久久区| 亚洲午夜激情免费视频| 久久艳片www.17c.com| 亚洲黄色免费| 国产亚洲制服色| 欧美日韩亚洲免费| 久久久在线视频| 亚洲综合日韩在线| 91久久久在线| 另类酷文…触手系列精品集v1小说| 一本色道久久综合亚洲精品不| 国产亚洲欧美另类中文 | 欧美电影在线播放| 欧美影视一区| 亚洲色图制服丝袜| 亚洲激情不卡| 欧美大片国产精品| 久久成人在线| 午夜精品视频在线| 中文久久精品| 亚洲美女尤物影院| 亚洲高清三级视频| 好吊色欧美一区二区三区视频| 欧美午夜精品一区二区三区| 美女精品网站| 久久夜色精品国产噜噜av| 午夜精品久久久久久| 一区二区三区日韩| 99这里有精品| 最新中文字幕亚洲| 欧美激情在线| 欧美电影在线观看| 欧美成人r级一区二区三区| 欧美一区二区三区久久精品茉莉花| 亚洲视频1区| 99国产精品久久久久久久成人热| 亚洲激情黄色| 亚洲精选国产| 日韩视频免费大全中文字幕| 亚洲精品国产视频| 亚洲激情二区| 日韩一二三在线视频播| 亚洲乱码国产乱码精品精可以看 | 久久综合狠狠综合久久综青草| 欧美一区二区三区免费在线看| 亚洲一区在线观看免费观看电影高清| 一区二区三区成人| 亚洲欧美日韩国产综合| 亚洲一本视频| 欧美亚洲在线播放| 久久久久久有精品国产| 久久夜色精品国产欧美乱| 久久午夜羞羞影院免费观看| 久久深夜福利| 欧美国产专区| 亚洲精品久久嫩草网站秘色| 99成人免费视频| 亚洲综合二区| 久久蜜臀精品av| 欧美高潮视频| 国产精品久久久| 国内精品国产成人| 亚洲国产经典视频| 在线亚洲成人| 久久国产免费| 亚洲成人在线网站| 夜夜嗨一区二区| 欧美一区=区| 欧美大片91| 国产精品免费一区二区三区在线观看 | 一本大道久久a久久综合婷婷| 亚洲婷婷综合色高清在线| 性一交一乱一区二区洋洋av| 久久久久综合网| 欧美日韩中文字幕在线视频| 国产日韩欧美精品一区| 亚洲国产色一区| 午夜宅男欧美| 亚洲国产精品999| 亚洲宅男天堂在线观看无病毒| 久久久www成人免费无遮挡大片 | 日韩一级视频免费观看在线| 亚洲欧美变态国产另类| 久久综合久久综合久久综合| 亚洲精品日韩在线观看| 性欧美暴力猛交69hd| 欧美另类变人与禽xxxxx| 国产欧美精品在线播放| 亚洲精品乱码视频| 欧美在线日韩精品| 亚洲精美视频| 久久久久久久性| 国产精品中文字幕在线观看| 亚洲激情视频网站| 欧美在线视频免费观看| 亚洲精品乱码久久久久久日本蜜臀 | 欧美va亚洲va国产综合| 亚洲影音一区| 欧美乱大交xxxxx| 亚洲高清在线播放| 久久精品一区二区三区不卡牛牛 | 国产精品无码专区在线观看| 亚洲精品久久7777| 久久五月激情| 亚洲欧美在线aaa| 欧美先锋影音| 日韩西西人体444www| 裸体歌舞表演一区二区| 午夜精品国产精品大乳美女| 欧美日韩精品不卡| 亚洲另类黄色| 亚洲国产91| 玖玖精品视频| 亚洲盗摄视频| 久久综合影音| 久久久福利视频| 国产一区视频观看| 久久大逼视频| 欧美一级久久久| 国产亚洲欧美另类一区二区三区| 亚洲欧美电影在线观看| 一区二区三区 在线观看视频| 欧美区视频在线观看| 亚洲人成毛片在线播放女女| 免费视频一区二区三区在线观看| 午夜精品一区二区三区在线| 国产精品美女在线观看| 亚洲男人av电影| 亚洲欧美成人| 国产一区二区三区观看| 久久免费视频在线| 久久精品国产999大香线蕉| 国产专区一区| 欧美电影免费观看大全| 免费av成人在线| 一区二区三区久久久| 在线综合亚洲欧美在线视频| 国产精品久99| 久久久久国产精品一区| 久久久久久自在自线|