我想在棒棒糖前和棒棒糖上面实现透明状态栏。我的cast
是19.我尝试了以下方法来实现透明minimumSdkLevel
。但statusbar
位于toolbar
之下。
以下是截图(这是一个带有工具栏的全屏碎片):
上述statusbar
的布局:
screenshot
这是 <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
app:cardCornerRadius="3dp"
android:fitsSystemWindows="true"
app:cardElevation="3dp">
<RelativeLayout
android:id="@+id/gamesLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:id="@+id/toolbarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/gameToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbarLayout">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:adjustViewBounds="true"
android:alpha="0.3"
android:scaleType="fitXY"
android:src="@drawable/background_img" />
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:alpha="0.3"
android:rotation="180"
android:scaleType="fitXY"
android:src="@drawable/background_img" />
<android.support.v7.widget.RecyclerView
android:id="@+id/gameList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp" />
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
:
styles.xml
这是 <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>
:
v21/styles.xml
我甚至已将<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:colorPrimary">@color/colorPrimary</item>
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:colorAccent">@color/colorAccent</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
添加到android:fitsSystemWindows="true"
和Activities
的根布局中。
我在Fragments
和Activities
:
Fragments
为什么我没有透明if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
以及为什么Statusbar
位于Toolbar
下面?
答案 0 :(得分:0)
<!-- Base application theme. -->
<style name="BGTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
<style name="BGTheme.ActionBar.Transparent" parent="BGTheme">
<item name="android:windowContentOverlay">@null</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@android:color/transparent</item>
<item name="android:textColorSecondary">@color/white</item>
</style>
<style name="BGTheme.ActionBar.Transparent.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="BGTheme.ActionBar.Transparent.PopupOverlay"
parent="ThemeOverlay.AppCompat.Light" />
并在你的v-21 style.xml
中<style name="BGTheme.ActionBar.Transparent" parent="BGTheme">
<item name="colorPrimary">@android:color/transparent</item>
</style>
注意:在根布局android:fitsSystemWindows="true"
答案 1 :(得分:0)
删除陈述
在21岁以下无法使用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
答案 2 :(得分:-2)
在'style.xml'
中添加流畅的线条 <item name="android:windowContentOverlay">@null</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@android:color/transparent</item>
答案 3 :(得分:-2)
修改强>
尝试在基本视图中使用以下行。
android:fitsSystemWindows="true"
也提到了
android:fitsSystemWindows
是
内部属性,根据系统窗口调整视图布局 作为状态栏。如果为true,则调整此视图的填充以便离开 系统窗口的空间。只有在此视图出现时才会生效 非嵌入式活动。
必须是布尔值,&#34; true&#34;或&#34; false&#34;。
这也可能是对资源的引用(在表单中) &#34; @ [package:] type:name&#34;)或theme属性(在表单中 &#34;?[package:] [type:] name&#34;)包含此类型的值。
这对应于全局属性资源符号 fitsSystemWindows。
您也可以使用主题中的以下行全局使用它
<item name="android:fitsSystemWindows">true</item>
我希望它有所帮助。它适用于我的项目。