当前位置: 首页 > 知识库问答 >
问题:

工具栏上方的状态栏为白色[重复]

裴兴学
2023-03-14

以下是我的布局:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
   android:id="@+id/container_toolbar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   xmlns:android="http://schemas.android.com/apk/res/android">

<include
    android:id="@+id/toolbar"
    layout="@layout/toolbar" />

 <include layout="@layout/content_movie_detail" />

</LinearLayout>

工具栏:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto"
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:minHeight="?attr/actionBarSize"
  android:background="@color/colorPrimary"
  local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
  local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_movie_detail);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    actionBar = getSupportActionBar();

    try {
        assert actionBar != null;
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayShowTitleEnabled(true);
    } catch (Exception ignored) {
        Log.e(TAG,ignored.toString());
    }

}

我错过了什么?

共有3个答案

司徒杜吟
2023-03-14

如前所述,有两种方法可以设置状态栏颜色。第一个是更改值文件夹中colors.xml的颜色PrimaryBlack。

另一种设置状态栏颜色的方法是通过Window类编程:

AndroidLollipop带来了改变应用程序中状态栏颜色的能力,以获得更沉浸式的用户体验,并符合谷歌的材料设计准则。下面是如何使用新窗口更改状态栏的颜色。API级别21中引入的setStatusBarColor方法。更改状态栏的颜色还需要在窗口上设置两个附加标志;您需要添加标志\u DRAWS\u SYSTEM\u BAR\u BACKGROUNDS标志并清除标志\u Transparent\u 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));

注意:setStatusBarColor方法适用于android API 5.0或更高版本。要将状态栏颜色从KitKat更改为上面的颜色,此代码块将起作用:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        Window w = context.getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        //status bar height
        int statusBarHeight = Utilities.getStatusBarHeight(context);

        View view = new View(context);
        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        view.getLayoutParams().height = statusBarHeight;
        ((ViewGroup) w.getDecorView()).addView(view);
        view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
    }

如您所见,它创建了一个View对象,并将其设置为背景颜色。

参考文献:

如何在android中更改状态栏的颜色

http://www.dynamicguru.com/android/change-color-of-status-bar-in-android-apps-programmatically/

夏侯弘光
2023-03-14

状态栏的颜色取决于可在样式中找到的colorPrimaryDark的值。xml文件

或者,您可以这样设置颜色:setStatusBarColor()。在这里你可以找到更多的信息。

齐昊苍
2023-03-14

我在这里找到了答案:

状态栏是白色的

<item name="android:statusBarColor">@android:color/transparent</item>

您将在值/样式/样式中看到这行代码。xml(v21)。移除它,这样就解决了问题

 类似资料:
  • 出于某种原因,状态栏现在是白色的。或者更确切地说,是灰白色,在明亮的背景下隐约可见图标的另一种白色阴影。这是错误的,因为我的应用栏布局使用蓝色阴影作为其颜色。到目前为止,这一直工作正常,我不知道我做了什么导致这种情况。我尝试手动将状态BarColor设置为colorPrimaryDark (#0277bd),但它不起作用。 我只是不知道为什么会发生这种情况。我正在粘贴我的活动的布局.xml,也许有

  • 我最近遇到了协调器布局的问题。当我尝试创建简单的折叠工具栏布局(如本例所示)时,工具栏似乎位于状态栏下,如下图所示(在preLolipop设备上,一切都正常,因为应用程序不会在状态栏下绘制)。 我的活动布局的代码片段: My Styles(仅限21版),其中BaseAppTheme父级为Theme.AppCompat.Light.NoActionBar:

  • 我已经改变了我的应用程序的状态栏颜色为白色后,这个状态栏图标是不可见的。

  • 更新:清单已添加 由于某种原因,状态栏没有显示深原色,但它在我的 Nexus 5 @ 5.1.1 Lollipop上是半透明的。在此处观看视频:http://sendvid.com/vo5b5a83 如您所见,当应用程序启动时,状态栏的颜色为红色,但是当它进入启动活动时,它会变回灰色,并且是半透明的。以下是代码: styles.xml activity_main.xml AndroidManife

  • 我想在活动中使用appcompat v21工具栏。但我正在实现的工具栏在状态栏下方重叠。我该怎么修? 以下是活动布局xml: 工具栏视图: 主题风格:

  • 如果你认为它重复了一些其他的问题,那么我应该让你现在我已经尝试了3,4页的谷歌搜索,也实现了他们。