您的位置:首页 > 其它

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

2017-10-30 17:45 447 查看
最近项目中需要将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是根布局。

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: