更换全局主题后如何修改miui8下拉通知栏颜色色

经验776 米
在线时间5 小时
积分 800, 距离下一级还需 1200 积分
积分 800, 距离下一级还需 1200 积分
机型小米手机5
签到次数56
MIUI版本7.5.4
我是混搭的主题,通知栏是透明的饭颜色是深色,字体也是黑色就显得有些不清楚了,能改吗
Screenshot_-01-43-00-548_com.miui.home.png (939.31 KB, 下载次数: 0)
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验2670 米
在线时间72 小时
机型小米手机4c
签到次数42
MIUI版本7.3.9
安卓全局里改
经验2976 米
在线时间37 小时
版本7.6.20
机型小米Max 高配版
签到次数22
MIUI版本7.6.20
经验4454 米
在线时间44 小时
版本V8.2.28.0.NCACNEC
机型小米手机6
MIUI版本V8.2.28.0.NCACNEC
三打猪悟能 发表于
安卓全局里改
经验3938 米
在线时间55 小时
版本7.8.14
机型小米手机5
签到次数49
MIUI版本7.8.14
要手机刷了XP框架才能修改
经验1820 米
在线时间21 小时
版本7.6.10
积分 2017, 距离下一级还需 2983 积分
积分 2017, 距离下一级还需 2983 积分
机型红米Note3 全网通
MIUI版本7.6.10
-=?????(? 'ω')我拿buff
经验453 米
在线时间4 小时
积分 518, 距离下一级还需 1482 积分
积分 518, 距离下一级还需 1482 积分
处女座亮了
经验343 米
在线时间14 小时
积分 485, 距离下一级还需 15 积分
积分 485, 距离下一级还需 15 积分
安卓全局里改
经验318 米
在线时间14 小时
积分 454, 距离下一级还需 46 积分
积分 454, 距离下一级还需 46 积分
安卓全局里改
经验406 米
在线时间6 小时
版本6.10.13
积分 410, 距离下一级还需 90 积分
积分 410, 距离下一级还需 90 积分
机型小米手机5
签到次数40
MIUI版本6.10.13
怎么改呢???????
MIUI七周年
MIUI 9纪念勋章
“澎湃S1 ”芯片纪念勋章
参与活动回帖可得
已关注微信
关注新浪微博
已关注新浪微博
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
小米众筹2周年
参加回帖活动
新版论坛APP
更新新版APP
小米7周年勋章
2017米粉节晒单赢专属勋章
参与红米Note 4X活动
小火箭勋章
神舟11号 话题活动
MIUI 300周
MIUI 300周更新纪念勋章
已关注极客秀微信
MIUI六周年
MIUI六周年纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号3913人阅读
功能总结(13)
页面功能(1)
手机功能(13)
1、android 沉浸式状态栏
通知栏(notification)背景颜色跟随app导航栏(top title)背景颜色变化而变化。这也叫沉浸式状态栏,这是Google在android 4.4以上的系统提出的。
Activity中添加如下代码:
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
} 布局文件中的导航条添加如下属性:
android:clipToPadding=&false&
android:fitsSystemWindows=&true&
更多内容请参考:http://blog.csdn.net/carlos1992/article/details/
2、改变通知栏颜色
当时要的就是这个,而搜到的很多都是沉浸效果。沉浸效果相当于隐藏了通知栏,对整个屏幕进行了拉伸,这时不仅自己的导航栏要考虑通知栏的高度,还要考虑4.4以下的Android系统无法沉浸通知栏的情况。另外,对于有虚拟按键Android设备的底部也会被沉浸,这并不是我们想要的。
下面是我整理的代码:
public class Utility {
* 改变通知栏颜色
public static void setActionBar(Context context){
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
setTranslucentStatus(context, true);
SystemBarTintManager tintManager = new SystemBarTintManager((Activity) context);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintResource(R.color.action_bar);
@TargetApi(19)
public static void setTranslucentStatus(Context context, boolean on) {
Window win = ((Activity)context).getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
winParams.flags |=
winParams.flags &= ~
win.setAttributes(winParams);
在Activity的onCreate中调用上面方法
Utility.setActionBar(this);同时在xml布局最外层添加下面的属性
android:fitsSystemWindows=&true&SystemBarTintManager.java代码:
package com.yuebao.shop.
import android.annotation.SuppressL
import android.annotation.TargetA
import android.app.A
import android.content.C
import android.content.res.C
import android.content.res.R
import android.content.res.TypedA
import android.graphics.drawable.D
import android.os.B
import android.util.DisplayM
import android.util.TypedV
import android.view.G
import android.view.V
import android.view.ViewC
import android.view.ViewG
import android.view.W
import android.view.WindowM
import android.widget.FrameLayout.LayoutP
import java.lang.reflect.M
@SuppressWarnings({ &rawtypes&, &unchecked& })
public class SystemBarTintManager {
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
Class c = Class.forName(&android.os.SystemProperties&);
Method m = c.getDeclaredMethod(&get&, String.class);
m.setAccessible(true);
sNavBarOverride = (String) m.invoke(null, &qemu.hw.mainkeys&);
} catch (Throwable e) {
sNavBarOverride =
public static final int DEFAULT_TINT_COLOR = 0x;
private static String sNavBarO
private final SystemBarConfig mC
private boolean mStatusBarA
private boolean mNavBarA
private boolean mStatusBarTintE
private boolean mNavBarTintE
private View mStatusBarTintV
private View mNavBarTintV
@TargetApi(19)
public SystemBarTintManager(Activity activity) {
Window win = activity.getWindow();
ViewGroup decorViewGroup = (ViewGroup) win.getDecorView();
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
int[] attrs = {android.R.attr.windowTranslucentStatus,
android.R.attr.windowTranslucentNavigation};
TypedArray a = activity.obtainStyledAttributes(attrs);
mStatusBarAvailable = a.getBoolean(0, false);
mNavBarAvailable = a.getBoolean(1, false);
} finally {
a.recycle();
WindowManager.LayoutParams winParams = win.getAttributes();
int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if ((winParams.flags & bits) != 0) {
mStatusBarAvailable =
bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
if ((winParams.flags & bits) != 0) {
mNavBarAvailable =
mConfig = new SystemBarConfig(activity, mStatusBarAvailable, mNavBarAvailable);
if (!mConfig.hasNavigtionBar()) {
mNavBarAvailable =
if (mStatusBarAvailable) {
setupStatusBarView(activity, decorViewGroup);
if (mNavBarAvailable) {
setupNavBarView(activity, decorViewGroup);
public void setStatusBarTintEnabled(boolean enabled) {
mStatusBarTintEnabled =
if (mStatusBarAvailable) {
mStatusBarTintView.setVisibility(enabled ? View.VISIBLE : View.GONE);
public void setNavigationBarTintEnabled(boolean enabled) {
mNavBarTintEnabled =
if (mNavBarAvailable) {
mNavBarTintView.setVisibility(enabled ? View.VISIBLE : View.GONE);
public void setTintColor(int color) {
setStatusBarTintColor(color);
setNavigationBarTintColor(color);
public void setTintResource(int res) {
setStatusBarTintResource(res);
setNavigationBarTintResource(res);
public void setTintDrawable(Drawable drawable) {
setStatusBarTintDrawable(drawable);
setNavigationBarTintDrawable(drawable);
public void setTintAlpha(float alpha) {
setStatusBarAlpha(alpha);
setNavigationBarAlpha(alpha);
public void setStatusBarTintColor(int color) {
if (mStatusBarAvailable) {
mStatusBarTintView.setBackgroundColor(color);
public void setStatusBarTintResource(int res) {
if (mStatusBarAvailable) {
mStatusBarTintView.setBackgroundResource(res);
@SuppressWarnings(&deprecation&)
public void setStatusBarTintDrawable(Drawable drawable) {
if (mStatusBarAvailable) {
mStatusBarTintView.setBackgroundDrawable(drawable);
@TargetApi(11)
public void setStatusBarAlpha(float alpha) {
if (mStatusBarAvailable && Build.VERSION.SDK_INT &= Build.VERSION_CODES.HONEYCOMB) {
mStatusBarTintView.setAlpha(alpha);
public void setNavigationBarTintColor(int color) {
if (mNavBarAvailable) {
mNavBarTintView.setBackgroundColor(color);
public void setNavigationBarTintResource(int res) {
if (mNavBarAvailable) {
mNavBarTintView.setBackgroundResource(res);
@SuppressWarnings(&deprecation&)
public void setNavigationBarTintDrawable(Drawable drawable) {
if (mNavBarAvailable) {
mNavBarTintView.setBackgroundDrawable(drawable);
@TargetApi(11)
public void setNavigationBarAlpha(float alpha) {
if (mNavBarAvailable && Build.VERSION.SDK_INT &= Build.VERSION_CODES.HONEYCOMB) {
mNavBarTintView.setAlpha(alpha);
public SystemBarConfig getConfig() {
public boolean isStatusBarTintEnabled() {
return mStatusBarTintE
public boolean isNavBarTintEnabled() {
return mNavBarTintE
private void setupStatusBarView(Context context, ViewGroup decorViewGroup) {
mStatusBarTintView = new View(context);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getStatusBarHeight());
params.gravity = Gravity.TOP;
if (mNavBarAvailable && !mConfig.isNavigationAtBottom()) {
params.rightMargin = mConfig.getNavigationBarWidth();
mStatusBarTintView.setLayoutParams(params);
mStatusBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
mStatusBarTintView.setVisibility(View.GONE);
decorViewGroup.addView(mStatusBarTintView);
private void setupNavBarView(Context context, ViewGroup decorViewGroup) {
mNavBarTintView = new View(context);
if (mConfig.isNavigationAtBottom()) {
params = new LayoutParams(LayoutParams.MATCH_PARENT, mConfig.getNavigationBarHeight());
params.gravity = Gravity.BOTTOM;
params = new LayoutParams(mConfig.getNavigationBarWidth(), LayoutParams.MATCH_PARENT);
params.gravity = Gravity.RIGHT;
mNavBarTintView.setLayoutParams(params);
mNavBarTintView.setBackgroundColor(DEFAULT_TINT_COLOR);
mNavBarTintView.setVisibility(View.GONE);
decorViewGroup.addView(mNavBarTintView);
public static class SystemBarConfig {
private static final String STATUS_BAR_HEIGHT_RES_NAME = &status_bar_height&;
private static final String NAV_BAR_HEIGHT_RES_NAME = &navigation_bar_height&;
private static final String NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME = &navigation_bar_height_landscape&;
private static final String NAV_BAR_WIDTH_RES_NAME = &navigation_bar_width&;
private static final String SHOW_NAV_BAR_RES_NAME = &config_showNavigationBar&;
private final boolean mTranslucentStatusB
private final boolean mTranslucentNavB
private final int mStatusBarH
private final int mActionBarH
private final boolean mHasNavigationB
private final int mNavigationBarH
private final int mNavigationBarW
private final boolean mInP
private final float mSmallestWidthDp;
private SystemBarConfig(Activity activity, boolean translucentStatusBar, boolean traslucentNavBar) {
Resources res = activity.getResources();
mInPortrait = (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
mSmallestWidthDp = getSmallestWidthDp(activity);
mStatusBarHeight = getInternalDimensionSize(res, STATUS_BAR_HEIGHT_RES_NAME);
mActionBarHeight = getActionBarHeight(activity);
mNavigationBarHeight = getNavigationBarHeight(activity);
mNavigationBarWidth = getNavigationBarWidth(activity);
mHasNavigationBar = (mNavigationBarHeight & 0);
mTranslucentStatusBar = translucentStatusB
mTranslucentNavBar = traslucentNavB
@TargetApi(14)
private int getActionBarHeight(Context context) {
int result = 0;
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
TypedValue tv = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
result = plexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
@TargetApi(14)
private int getNavigationBarHeight(Context context) {
Resources res = context.getResources();
int result = 0;
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (hasNavBar(context)) {
if (mInPortrait) {
key = NAV_BAR_HEIGHT_RES_NAME;
key = NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME;
return getInternalDimensionSize(res, key);
@TargetApi(14)
private int getNavigationBarWidth(Context context) {
Resources res = context.getResources();
int result = 0;
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (hasNavBar(context)) {
return getInternalDimensionSize(res, NAV_BAR_WIDTH_RES_NAME);
@TargetApi(14)
private boolean hasNavBar(Context context) {
Resources res = context.getResources();
int resourceId = res.getIdentifier(SHOW_NAV_BAR_RES_NAME, &bool&, &android&);
if (resourceId != 0) {
boolean hasNav = res.getBoolean(resourceId);
// check override flag (see static block)
if (&1&.equals(sNavBarOverride)) {
} else if (&0&.equals(sNavBarOverride)) {
return hasN
} else { // fallback
return !ViewConfiguration.get(context).hasPermanentMenuKey();
private int getInternalDimensionSize(Resources res, String key) {
int result = 0;
int resourceId = res.getIdentifier(key, &dimen&, &android&);
if (resourceId & 0) {
result = res.getDimensionPixelSize(resourceId);
@SuppressLint(&NewApi&)
private float getSmallestWidthDp(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
if (Build.VERSION.SDK_INT &= Build.VERSION_CODES.JELLY_BEAN) {
activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
float widthDp = metrics.widthPixels / metrics.
float heightDp = metrics.heightPixels / metrics.
return Math.min(widthDp, heightDp);
public boolean isNavigationAtBottom() {
return (mSmallestWidthDp &= 600 || mInPortrait);
public int getStatusBarHeight() {
return mStatusBarH
public int getActionBarHeight() {
return mActionBarH
public boolean hasNavigtionBar() {
return mHasNavigationB
public int getNavigationBarHeight() {
return mNavigationBarH
public int getNavigationBarWidth() {
return mNavigationBarW
public int getPixelInsetTop(boolean withActionBar) {
return (mTranslucentStatusBar ? mStatusBarHeight : 0) + (withActionBar ? mActionBarHeight : 0);
public int getPixelInsetBottom() {
if (mTranslucentNavBar && isNavigationAtBottom()) {
return mNavigationBarH
public int getPixelInsetRight() {
if (mTranslucentNavBar && !isNavigationAtBottom()) {
return mNavigationBarW
参考文章:http://blog.csdn.net/jdsjlzx/article/details/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:116256次
积分:2139
积分:2139
排名:第17755名
原创:96篇
转载:44篇
评论:16条
(1)(1)(2)(4)(2)(1)(5)(2)(2)(1)(1)(7)(27)(7)(5)(6)(9)(7)(3)(2)(3)(5)(37)}

我要回帖

更多关于 小米通知栏颜色 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信