2012-09-20 40 views
0

我有一个AlertDialog,其Y被设置并设置为显示在中心。它在2.3模拟器&设备上完美显示,但在4.1(模拟器& 4.0设备)上显示在比预期更多的顶部。 下面的代码:obth版本的模拟器android位置alertdialog不工作在4.1上2.3

 AlertDialog adg = scrnDlg.create(); 
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
    lp.copyFrom(adg.getWindow().getAttributes()); 
    lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
    //lp.height = WindowManager.LayoutParams.MATCH_PARENT; 
    lp.y = 05; 
    lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; 
    adg.getWindow().setAttributes(lp); 
       adg.show(); 
    /* working with 2.3 but nt proper position with 4.0 
     WindowManager.LayoutParams lp = adg.getWindow().getAttributes(); 
     lp.y = 05; 
     lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; 
     adg.getWindow().setAttributes(lp); 
     */ 

屏幕截图: enter image description here

任何一个可以帮助我走出麦汁这个问题? 另外这个高度是完美的LD,马里兰州,但对于HD &的xD这个高度似乎是小&更多的空间留在底部。如何根据屏幕高度设置高度。

任何帮助ishighly赞赏。

谢谢

回答

3

我终于通过测试Android操作系统版本来设置Gravity来获得上述结果。这是我如何做,并得到resutls预期:

alertDlg.show(); 
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
lp.copyFrom(alertDlg.getWindow().getAttributes()); 
lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
lp.y = 02; 
if (MyActivity.Build_Version < Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; 
else if (MyActivity.Build_Version >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
lp.gravity = Gravity.CENTER_HORIZONTAL; 

alertDlg.getWindow().setAttributes(lp); 

重力的LayoutParams的是4.1和低于4.1版本的Android的,因此,上述设置和工作完全不同的待遇。

希望这分享帮助别人。

相关问题