標籤:android style blog color io cti
1. We can make it to play trick in code.
At Dialog‘s show function, after app has set contentView, we can add a GlobalLayoutListener on decorView‘s ViewTreeObserver. At the listener, we can check the decorView‘s height, if over the max height, just truncate it.
1 private void resolveAlertDialogHeight() { 2 WindowManager wm = (WindowManager) mContext 3 .getSystemService(Context.WINDOW_SERVICE); 4 Display display = wm.getDefaultDisplay(); 5 6 Point size = new Point(); 7 display.getSize(size); 8 int height = size.y; 9 10 final int maxHeight = (int) (height * 0.68);11 12 final View decorView = mWindow.getDecorView();13 decorView.getViewTreeObserver().addOnGlobalLayoutListener(14 new OnGlobalLayoutListener() {15 @Override16 public void onGlobalLayout() {17 int actualHeight = decorView.getMeasuredHeight();18 19 WindowManager.LayoutParams l = mWindow.getAttributes();20 if (actualHeight > maxHeight) {21 l.height = maxHeight;22 23 mWindow.setAttributes(l);24 }25 26 decorView.getViewTreeObserver()27 .removeOnGlobalLayoutListener(this);28 }29 });30 }
2. Modify windowBackground reference png.
The dot9 png referenced by android:windowBackground attr is the Dialog‘s background. We can modify this dot9 png, adding extra padding on top and bottom to limit the margin of Alert.