横屏Activity下Dialog设置全屏无效的问题

最近项目中需要将Presentation改成Dialog实现,发现在xml里面写matchparent,并且在dialog的theme里面设置

<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>

都不会使dialog全屏的问题。后来查阅文献,找到两种解决办法。不过显示效果会不一样。


首先,设置Dialog的theme属性如下(部分属性是我项目使用的,与此无关)

    <style name="single_fullscreen_dialog_theme" parent="android:style/Theme.Dialog">
        <!--是否全屏-->
        <item name="android:windowFullscreen">true</item>
        <!--背景颜色及透明程度-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--是否有标题 -->
        <item name="android:windowNoTitle">true</item>
        <!--是否浮现在activity之上-->
        <item name="android:windowIsFloating">true</item>
        <!--是否模糊-->
        <item name="android:backgroundDimEnabled">false</item>
        <!-- 对话框是否有遮盖 -->
        <item name="android:windowContentOverlay">@null</item>
        <!-- 背景缓存颜色 -->
        <item name="android:colorBackgroundCacheHint">@null</item>
        <!-- 弹出或者进入时的动画效果 -->
        <!--<item name="android:windowAnimationStyle">@style/dialog_animation</item>-->
    </style>


方法一:在setContentView之后调用

getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

这种的显示效果会遮挡系统状态栏。






































方法二:重写show方法

    @Override
    public void show() {
        super.show();
        FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mContentview.getLayoutParams();
        DisplayMetrics dm = new DisplayMetrics();
        WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        manager.getDefaultDisplay().getMetrics(dm);
        layoutParams.width = dm.widthPixels;
        layoutParams.height = dm.heightPixels;
        mContentview.setLayoutParams(layoutParams);
    }

mContentView是根布局。

这种的显示效果不会遮挡系统状态栏。







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值