zoukankan      html  css  js  c++  java
  • Android中关于系统Dialog无法全屏的问题

    自定义一个Dialog,继承了系统Dialog的样式。这时候会发现,即使布局文件中写的width和height都是match_parent,依然无法达到全屏的效果。

    原因是:系统dialog的样式。默认有padding=10dip,所以即使设置为全屏,也是有10dip的间隙。

    如果不得不继承这个样式,还希望改变这个dialog的大小,我们可以尝试重写一个这个Dialog的show()方法。

    分析:在Dialog的show()方法中,我们可以看到代码:

     1   WindowManager.LayoutParams l = mWindow.getAttributes();
     2         if ((l.softInputMode
     3                 & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) == 0) {
     4             WindowManager.LayoutParams nl = new WindowManager.LayoutParams();
     5             nl.copyFrom(l);
     6             nl.softInputMode |=
     7                     WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;
     8             l = nl;
     9         }
    10 
    11         try {
    12             mWindowManager.addView(mDecor, l);
    13             mShowing = true;
    14     
    15             sendShowMessage();
    16         } finally {
    17         }

    也就是说,大小其实是在show的时候控制的。我们在show之前,即使动态改变这个layoutParams,也是不起作用的。

    我是这么写的:

     1 @Override
     2     public void show() {
     3         super.show();
     4         //set the dialog fullscreen
     5         FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mContentView
     6                 .getLayoutParams();
     7         layoutParams.width = display.getWidth();
     8         layoutParams.height = display.getHeight();
     9         mContentView.setLayoutParams(layoutParams); 
    10 }

    其中,mContentView是整个大布局的view。这样就达到了既继承系统Theme.Dialog样式,又全屏的目的了。

    当然,也有人提出,采用其他样式来避开这个问题,我尝试过,有些样式是可以全屏,但多了些我不想要的效果。这样来修改,也算一个解决方案吧。

    转载请注明出处,谢谢~~

  • 相关阅读:
    168. Excel Sheet Column Title
    171. Excel Sheet Column Number
    264. Ugly Number II java solutions
    152. Maximum Product Subarray java solutions
    309. Best Time to Buy and Sell Stock with Cooldown java solutions
    120. Triangle java solutions
    300. Longest Increasing Subsequence java solutions
    63. Unique Paths II java solutions
    221. Maximal Square java solutions
    279. Perfect Squares java solutions
  • 原文地址:https://www.cnblogs.com/lovejoy/p/3527935.html
Copyright © 2011-2022 走看看