android 4.4.2 弹出窗口,Android 4.4 Dialog 被状态栏遮挡的解决方法

首先看不正常的图,点击tracing_dialog按钮弹出对话框 然后看理论上的效果图 观察两张图发现,不正常的图最上方被状态栏遮挡住了,而该问题存在于android4.4版本

首先看不正常的图,点击tracing_dialog按钮弹出对话框

958a498741ed48831a22c491031df03e.png

然后看理论上的效果图

e1a06b9698128b43aecbd98a26df5732.png

观察两张图发现,不正常的图最上方被状态栏遮挡住了,而该问题存在于android4.4版本中。为了修复该问题,,我们增加一个函数在Dialog的子类中,对于android4.4及以上版本进行修复,而android4.4以下版本不进行处理。

我们先来看有问题的代码

package cn.edu.zafu.demo;

import android.app.Dialog;

import android.content.Context;

import android.os.Build;

import android.os.Bundle;

import android.view.WindowManager;

/**

* Created by lizhangqu on 2015/5/22.

*/

{

public TracingDialog(Context mContext, int style) {

super(mContext, style);

setCancelable(false);

}

(Bundle paramBundle) {

setContentView(R.layout.tracing_dialog);

}

}

创建Dialog的方法如下,第一个参数是Context对象,第二个参数是主题文件对应的id

TracingDialog dialog=new TracingDialog(MainActivity.this, R.style.kdialog);

dialog.show();

style如下

@android:color/transparent

@null

true

true

false

false

现在我们在TracingDialog中增加一个函数,该函数对android4.4及以上版本进行适配使其显示正常,增加的函数如下

private void applyCompat() {

if (Build.VERSION.SDK_INT < 19) {

return;

}

getWindow().setFlags(

WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

在TracingDialog的onCreate方法中调用以上函数即可,如下

(Bundle paramBundle) {

applyCompat();

setContentView(R.layout.tracing_dialog);

}

姑且不考虑继承Dialog这种创建Dialog的方法,没办法,历史遗留问题。Dialog的创建方法官方已经建议使用DialogFragment进行创建了。就这样,一个函数解决了问题!

参考文章

dialog-on-android-kitkat-seems-to-be-cut

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值