zoukankan      html  css  js  c++  java
  • How to limit Dialog's max height?

    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                     @Override
    16                     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.

  • 相关阅读:
    linux下ls出现文件的后缀有@,* ,/之类的解释
    对shell中cat 和EOF的理解
    linux中test的意义 又可以表示为[]
    Python程序中的进程操作-进程同步(multiprocess.Lock)
    Python程序中的进程操作-开启多进程
    进程的创建和结束
    同步异步阻塞非阻塞
    进程的并行和并发
    进程的调度
    进程基础
  • 原文地址:https://www.cnblogs.com/haobo/p/3850830.html
Copyright © 2011-2022 走看看