2016-09-06 105 views
9

我想改变高亮条的颜色Android Studio中:如何更改Android中状态栏的颜色?

enter image description here

我该怎么办呢?

+0

你说的是状态栏或电话的底部酒吧或其他什么东西?请更具体的 – KDeogharkar

+1

@KDeogharkar图片是告诉所有的事情。我不知道这个术语。 – Humty

+0

ohk我无法看到它。 imgur阻止我结束。我的错误 – KDeogharkar

回答

17

您可以通过设置您使用的是您的应用程序的风格android:statusBarColorandroid:colorPrimaryDark属性在styles.xml改变它。

android:statusBarColor继承默认的android:colorPrimaryDark值)

例如(因为我们在这里使用程序兼容性的主题,省略了android命名空间):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimaryDark">@color/your_custom_color</item> 
</style> 

在API层面21+您也可以使用代码中的Window.setStatusBarColor()方法。

-2

注意: - 在api级别19或21以及api级别以上支持状态栏颜色。
请检查此链接:change status bar color

1
<item name="colorPrimaryDark">@color/your_color</item> 

将只在棒棒堂可见,比棒棒堂(API)的设备更大。 P.S.您需要将Theme.AppCompat作为您的基本/主要主题

11

状态栏是操作系统拥有的系统窗口。 在5.0之前的Android设备上,应用程序没有权限更改其颜色,所以这不是AppCompat库可以支持的老版平台版本。最好的AppCompat可以做的是为应用程序中的ActionBar和其他常用UI小部件着色提供支持。

在5.0之后的Android设备上, 改变状态栏的颜色也需要在窗口上设置两个附加标志;您需要添加FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS标志并清除FLAG_TRANSLUCENT_STATUS标志。

Window window = activity.getWindow(); 

// clear FLAG_TRANSLUCENT_STATUS flag: 
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window 
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 

// finally change the color 
window.setStatusBarColor(activity.getResources().getColor(R.color.my_statusbar_color)); 
2

您也可以在主要活动中添加几行代码

if (Build.VERSION.SDK_INT >= 21) { 
     getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.dark_nav)); // Navigation bar the soft bottom of some phones like nexus and some Samsung note series 
     getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.statusbar)); //status bar or the time bar at the top 
     }