做项目的时候状态栏要求使用UI提供的颜色色值,但是当加载数据的进度弹出窗弹出时,状态栏回变黑色,进度条隐藏后又变成配置的颜色,看上去体验上不太好
解决办法:
public class LoadingDialog extends Dialog {
private View currentView;
public LoadingDialog(Context context) {
super(context,R.style.LoadDialog);
currentView = LayoutInflater.from(context).inflate(R.layout.loading_dialog,null);
setContentView(currentView);
//解决进度弹窗出现时,状态栏变成黑色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(Color.TRANSPARENT);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
try {
Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
field.setAccessible(true);
field.setInt(getWindow().getDecorView(), Color.TRANSPARENT);
} catch (Exception e) {}
}
}
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
View mash = currentView.findViewById(R.id.mash);
mash.setOnClickListener(v->{
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
return true;
}else {
return super.onKeyDown(keyCode, event);
}
}
}
附加dialog样式-透明背景,没有遮罩
<style name="LoadDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimAmount">0</item>
</style>
针对Android项目中,加载数据时Dialog弹出导致状态栏变黑的问题,提供了解决方案:通过设置附加的dialog样式实现透明背景,不显示遮罩层,确保状态栏颜色一致,提升用户体验。

4万+

被折叠的 条评论
为什么被折叠?



