【问题标题】:Change color by code at the top of action bar [duplicate]通过操作栏顶部的代码更改颜色[重复]
【发布时间】:2020-08-31 22:45:33
【问题描述】:

是否可以更改操作栏上部的颜色?如附图所示

【问题讨论】:

标签: android action


【解决方案1】:

是的,你可以。正如@CommonsWare 所说,您可以通过编辑样式资源文件中的colorPrimaryDark 项目来更改StatusBar 的颜色。

Screenshot of what it looks like in Android Studio

要通过 Java 代码更改 StatusBar 颜色,您可以将以下代码添加到您的活动中。请注意,Android 设备必须在 API 21 或更高版本上运行。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.darkPurple));
}

另外,如果您想更改 StatusBar 的前景文本,您只需将以下代码添加到 if 块。请注意,Android 设备必须在 API v23 或更高版本上运行。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    // for a black color foreground text:
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    // for a white color foreground text, just replace setSystemUiVisibility param with ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

【讨论】:

  • 是的,但我想通过代码来实现。因为我需要在应用运行期间更改颜色。
  • 好的。刚刚编辑了我的答案,看看。
【解决方案2】:

首先这是状态栏而不是操作栏。但是,如果您想以语法方式更改状态栏颜色,您可以使用Window.setStatusBarColor()。但是设备应该有android 5.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(Color.BLUE);
}

应该适合你。

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    相关资源
    最近更新 更多