以下是我的布局:
<?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());
}
}
我错过了什么?
如前所述,有两种方法可以设置状态栏颜色。第一个是更改值文件夹中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/
状态栏的颜色取决于可在样式中找到的
文件。colorPrimaryDark
的值。xml
或者,您可以这样设置颜色:setStatusBarColor()
。在这里你可以找到更多的信息。
我在这里找到了答案:
状态栏是白色的
<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页的谷歌搜索,也实现了他们。