ionic3中android状态栏

ionic3状态栏android、ios

android

ionic3中,文档中针对config.xmlStatusBar状态栏的设置只能针对于ios端,android端的设置只能通过其他方式修改,如参考网上基于插件js的修改,并不能满足各个机型的适配。

可通过向 platform/android/app/src/main/java/io/ionic/starter下添加以下StatusBarCompat.java文件

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.ColorInt;
import android.view.View;
import android.view.ViewGroup;

public class StatusBarCompat {
private static final int INVALID_VAL = -1;
private static final int COLOR_DEFAULT = Color.parseColor("#20000000");

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static void compat(Activity activity, int statusColor) {

//当前手机版本为5.0及以上
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    if (statusColor != INVALID_VAL) {
        activity.getWindow().setStatusBarColor(statusColor);
        }
    return;
}

//当前手机版本为4.4
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    int color = COLOR_DEFAULT;
    ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
    if (statusColor != INVALID_VAL) {
        color = statusColor;
        }
    View statusBarView = new View(activity);
    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
    getStatusBarHeight(activity));
    statusBarView.setBackgroundColor(color);
    contentView.addView(statusBarView, lp);
    }
}

public static void compat(Activity activity) {
    compat(activity, INVALID_VAL);
}

public static int getStatusBarHeight(Context context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
    return result;
}

}

然后在MainActivity.java中的onCreate()方法后加入代码

//设置状态栏颜色 #551b1d23 可配置为主题色
StatusBarCompat.compat(this, Color.parseColor("#551b1d23"));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}

这样就可以通过原生的代码简单的修改状态栏颜色。

---------------------------分割线------------------

ios

Q1. 状态栏和app重叠解决方案

A1:在config.xml中加入

<platform name=”ios”>
<preference name=”StatusBarOverlaysWebView” value=”false” />
</platform>

or 通过状态栏插件设置

A2:this.statusBar.overlaysWebView(false);



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值