工具栏上方的状态栏为白色

时间:2017-10-30 17:19:07

标签: android android-layout statusbar

我正在做一个应用程序,状态栏现在是白色的。我没有对布局做任何想象。如何让状态栏显示为" normal" (这将是黑色的白色图标)。 screen shot

这是我的布局:

 <?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());
    }

}

我错过了什么?

4 个答案:

答案 0 :(得分:12)

我在这里找到了答案:

Status bar is white

import math


def my_function():
  global math
  print(math.pi)
  math = 1

print(math) # -> <module 'math' from ...    
my_function() # -> 3.14159265359
print(math) # -> 1

您将在values / styles / styles.xml(v21)中看到该行代码。删除它,这解决了问题

答案 1 :(得分:0)

状态栏的颜色取决于colorPrimaryDark文件中可以找到的styles.xml的值。

或者,您可以设置如下颜色:setStatusBarColor()Here您可以找到更多信息。

答案 2 :(得分:0)

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

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

  

Android Lollipop带来了改变应用状态栏颜色的功能,可提供更加身临其境的用户体验,并与Google的材料设计指南保持一致。以下是如何使用API​​级别21中引入的新window.setStatusBarColor方法更改状态栏的颜色。更改状态栏的颜色还需要在Window上设置两个附加标志;您需要添加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));

P.S。: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对象并将其设置为backgroundColor。

REFFERENCE:

How to change the status bar color in android

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

答案 3 :(得分:0)

我猜你的colorPrimaryDark在style.xml中是白色/透明的。将style.xml文件中的colorPrimaryDark从白色变为你想要的任何其他颜色。