我正在做一个应用程序,状态栏现在是白色的。我没有对布局做任何想象。如何让状态栏显示为" normal" (这将是黑色的白色图标)。
这是我的布局:
<?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());
}
}
我错过了什么?
答案 0 :(得分:12)
我在这里找到了答案:
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从白色变为你想要的任何其他颜色。