android - 浅析 style 样式(解决顶部栏颜色问题 ,解决华为手机系统按钮弹出重叠问题)
访问量: 2375
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); } }