Back

android - 浅析 style 样式(解决顶部栏颜色问题 ,解决华为手机系统按钮弹出重叠问题)

发布时间: 2017-08-20 05:30:00

1. 首先,对于这里的调试,似乎要把App删掉,然后重新跑才会生效.否则会不生效.(貌似)

顶部栏颜色问题: 顶部兰,指的就是 电源,wifi信号这样的图标.用下图可以说明问题:

所以, 我们需要修改各种颜色的话,就要进入到安卓很复杂琐碎的地方了:

修改: style.xml  文件.

<resources>
  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
  </style>
</resources>

 所以,要定义这个theme的话,就要修改上面的文件.

同时,记得在AndroidManifest.xml中,有这样的内容:

<application ....   android:theme="@style/AppTheme"

这里的theme, 通常有两种,一种是 AppTheme, (暗色), 一种是AppThemeLight(亮色)

所以,我们在黑色颜色系中,用 前者, 白色App色调用,用 xxLight . 会方便很多.

2. 华为手机底部系统按钮的问题

最开始,我们发现App在华为手机上,无法正常显示.

华为的手机,都是虚拟键盘,在下面弹出来,导致原来的页面会稍微变短一些(竖直方向)

解决办法:

在 MainActivity中,调用下面方法: 

   Utils.setWindowStatusBarColor(this);


    
    public static void setWindowStatusBarColor(Activity activity) {
        activity.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = activity.getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
              // 下面这句代码,就是当华为的 虚拟键盘弹出来时候,不给它腾位置.
//                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor( Color.TRANSPARENT);
//            window.setNavigationBarColor(Color.TRANSPARENT);
        }
    }

Back