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.4if (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中加入

or 通过状态栏插件设置

A2:this.statusBar.overlaysWebView(false);



更多相关文章

  1. android:configChanges 问题
  2. Eclipse上基于Android(安卓)SDK的开发
  3. 【Android】TextView 属性详解
  4. [置顶] EditText属性大全
  5. 往Android(安卓)Studio中import工程出错时的解决方案
  6. android listview 自定义分割线总结
  7. EditText禁止输入中文设置
  8. android中statusbar高度的问题
  9. Android(安卓)Styles and Themes

随机推荐

  1. CCNA最实用的复习知识点(2)
  2. CCNA最实用的复习知识点(4)
  3. CCNA最实用的复习知识点(5)
  4. CVE-2019-12922:phpMyAdmin 0 Day漏洞
  5. Session会话与Cookie简单说明
  6. Linux基础课程汇总-辛舒展-专题视频课程
  7. 程序员如何用技术变现(上)
  8. 从运维角度看中大型网站架构的演变之路
  9. 总结几个常用的系统安全设置(含DenyHosts)
  10. Linux 磁盘分区管理