Android 4.4 Dialog 被状态栏遮挡的解决方法
来源:互联网 发布:gcp网络报名 编辑:程序博客网 时间:2024/05/31 19:00
首先看不正常的图,点击tracing_dialog按钮弹出对话框
然后看理论上的效果图
观察两张图发现,不正常的图最上方被状态栏遮挡住了,而该问题存在于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 class TracingDialog extends Dialog { public TracingDialog(Context mContext, int style) { super(mContext, style); setCancelable(false); } protected void onCreate(Bundle paramBundle) { setContentView(R.layout.tracing_dialog); }}
创建Dialog的方法如下,第一个参数是Context对象,第二个参数是主题文件对应的id
TracingDialog dialog=new TracingDialog(MainActivity.this, R.style.kdialog);dialog.show();
style如下
<style name="kdialog" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:backgroundDimEnabled">false</item></style>
现在我们在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方法中调用以上函数即可,如下
protected void onCreate(Bundle paramBundle) { applyCompat(); setContentView(R.layout.tracing_dialog);}
姑且不考虑继承Dialog这种创建Dialog的方法,没办法,历史遗留问题。Dialog的创建方法官方已经建议使用DialogFragment进行创建了。就这样,一个函数解决了问题!
参考文章
- dialog-on-android-kitkat-seems-to-be-cut
0 0
- Android 4.4 Dialog 被状态栏遮挡的解决方法
- 【Android】4.4以上使用透明状态栏后布局被软键盘遮挡的解决办法
- 状态栏被遮挡时的修改
- Android 软键盘遮挡Dialog
- Android 解决界面底部弹出dialog被虚拟按键遮挡一部分的问题
- xcode5 ios7 后状态栏被导航栏遮挡的解决方案
- xcode5 ios7 后状态栏被导航栏遮挡的解决方案
- 关于jquery dialog被activeX插件遮挡问题的解决办法
- Android平台上面输入法遮挡问题的解决方法
- Android WebView 软键盘遮挡输入框问题的解决方法
- Android软键盘弹出遮挡EidtText的解决方法
- Android中Navigation Bar遮挡PopupWindow的解决方法
- android studio toolbar遮挡住下面控件内容的解决方法
- object遮挡dialog标签的解决办法
- Extjs整合Ueditor时Dialog被遮挡
- cordova开发:android端用video.js播放视频,解决退出全屏后应用被状态栏遮挡
- textFild被键盘遮挡解决方法
- 关于DIV被SELECT遮挡问题的解决方法
- 自动释放池和ARC
- 05-图3. 六度空间 (30)
- hadoop平台进行小型网站的日志分析
- 算法导论8-4
- java中的数据转换
- Android 4.4 Dialog 被状态栏遮挡的解决方法
- Android ExpandableListView的使用技巧
- C#动态建库建表学习
- iOS 动画
- Linux添加新硬盘、分区、格式化、自动挂载
- java中set和get方法的理解使用
- BZOJ 1002
- Java 设计模式 -- 复合模式之二
- 欧拉工程第37题:Truncatable primes