我设法使状态栏保持半透明状态,现在我正面临着它的颜色问题。出于某种原因,状态栏与向下滑动时的工具栏颜色相同。
DetailsActivity.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@color/md_grey_200">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="260dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true"
app:layout_behavior="com.my.package.FlingBehavior">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:titleEnabled="true"
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="76dp"
android:paddingTop="24dp"
app:layout_collapseMode="pin"
android:fitsSystemWindows="false"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<RecyclerView
android:id="@+id/details_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
/>
</android.support.design.widget.CoordinatorLayout>
styles-v21:
<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- ...and here we setting appcompat’s color theme attrs -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/primary</item>
<item name="android:statusBarColor">@color/primary_dark</item>
</style>
这是我用来使状态栏保持半透明的原因:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
我尝试在styles-v21中将状态栏颜色更改为primary_dark,但它没有奏效。这两个都没有:
w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
w.setStatusBarColor(Color.BLUE);
colors.xml,根据要求:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#00b386</color>
<color name="colorPrimaryDark">#008060</color>
<color name="colorAccent">#00e6ac</color>
</resources>
我错过了什么?
答案 0 :(得分:1)
问题解决了!
1。我删除了这些行:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
2. 我将android:fitsSystemWindows="true"
添加到ImageView
,如下所示:
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
3. 将statusBarColor更改为透明:
<item name="android:statusBarColor">@color/transparent</item>
答案 1 :(得分:0)
更改此颜色,看看会发生什么
<item name="colorAccent">@color/primary</item>
与
<item name="colorAccent">@color/black</item>
或者你可以使用如下的主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
答案 2 :(得分:0)
我认为您可以将它添加到style-21包中指定的Activity!
<item name="android:statusBarColor">@android:color/transparent</item>
我看到你将其设置为CoordinatorLayout
,这意味着此视图将显示为full_screen,因此当向上滑动时,statusBar将显示工具栏的背景,因为它是透明的。
android:fitsSystemWindows="true"
希望能帮到你。
答案 3 :(得分:0)
更改强>
<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- ...and here we setting appcompat’s color theme attrs -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/primary</item>
<item name="android:statusBarColor">@color/primary_dark</item>
</style>
以强>
<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- ...and here we setting appcompat’s color theme attrs -->
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/primary</item>
<item name="android:statusBarColor">@color/primary_dark</item>
</style>
我希望这会有所帮助。
答案 4 :(得分:0)
我认为你对这个着色的东西有一些错误的概念。我想向你解释一下它的原理。
在colors.xml中,您通常可以在任何Android应用中使用3种颜色。他们是 -<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#12AE90</color>
<color name="colorAccent">#FF4081</color>
</resources>
这是您活动中最顶级颜色的颜色,这是包含网络信息,时间和所有其他很酷的东西的栏。如果要更改其颜色,请更改color.xml中的相应颜色代码。
这是标题栏的颜色,它包含您的应用名称或活动名称。如果您想更改其颜色,请更改color.xml中相应的颜色代码。
这是活动内部项目的颜色,如按钮和编辑文本等。如果要更改颜色,请更改color.xml中相应的颜色代码。
可以找到不同颜色的颜色代码here。
我认为我的回答可以解决您的疑问。如果有,请告诉我。