★ Android 使用AlertDialog 不能全屏解决方案

前言
最近公司一个定制设备,一个学校查询机当30秒没有用户操作的时候弹出广告轮播,这里我选择的是AlertDialog用这个去做,结果出现了各种小插曲。

总结一下遇到的问题,以及解决问题的办法

显示沉浸式状态栏
要知道既然做了全屏弹窗广告,这个沉浸式状态栏必须得隐藏掉,这里网上的一些方法还是很管用的。
因为我自定的弹窗继承了AlertDialog,所以重写了它的onStart,在onStart方法中进行隐藏沉浸式状态栏的操作。

  @Override
    protected void onStart() {
        super.onStart();
// 主要解决沉浸式状态栏的隐藏问题
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        this.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
    }
}

广告图片与显示屏幕总有一些间距

一开始我以为是我广告图片设置的问题,当我确定设置了fitXY 它还不是全屏。
网上有很多人写的博客,给我各种误导,说真的就算是抄袭别人的东西,能不能自己先试一试呢?经过我自己不断的摸索 尝试,最后实现了全屏显示。

因为我自定义Dialog采用的是继承 AlertDialog 的方式

(1)首先在构造方法中设置style

   public AdvertDialog(@NonNull Context context) {
       // 设置 style
        super(context,R.style.MyDialog);
    }

(2)在onCreate方法中 对View设置宽高,以及将padding 设置为0

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setBackgroundDrawable(null);

        //全屏的方法设置
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.gravity= Gravity.BOTTOM;
        layoutParams.width= ViewGroup.LayoutParams.MATCH_PARENT;
        layoutParams.height= ViewGroup.LayoutParams.MATCH_PARENT;
        getWindow().getDecorView().setPadding(0, 0, 0, 0);
        getWindow().setAttributes(layoutParams);
        
        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,       ViewGroup.LayoutParams.MATCH_PARENT);
        setContentView(R.layout.dialog_advert);
   
        }

最后写上style

   <!-- 全屏style -->
    <style name="MyDialog" parent="@android:style/Theme.NoTitleBar.Fullscreen">
        <!-- 是否有边框 -->
        <item name="android:windowFrame">@null</item>
        <!--是否在悬浮Activity之上  -->
        <item name="android:windowIsFloating">true</item>
        <!--标题  -->
        <item name="android:windowNoTitle">true</item>
        <!--阴影  -->
        <item name="android:windowIsTranslucent">true</item><!--半透明-->
        <!-- 点外边可以消失  -->
        <item name="android:windowCloseOnTouchOutside">false</item>
    </style>

如果你采用的也是 extends AlertDialog 继承AlertDialog方式 一定可以实现全屏显示! 亲测有效!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值