android 全屏显示 statusBar 完全通明显示在app前面
时间: 2024-02-05 12:03:42 浏览: 145
Android内容覆盖透明状态栏下实现全屏模式下带状态栏的效果
5星 · 资源好评率100%
要实现这个效果,需要在 AndroidManifest.xml 文件中设置 activity 的主题为透明,然后在布局文件中添加一个与 statusBar 高度相同的 View,将其背景设置为透明。具体步骤如下:
1. 在 AndroidManifest.xml 文件中设置 activity 的主题为透明:
```xml
<activity
android:name=".MainActivity"
android:theme="@style/TransparentTheme">
</activity>
```
2. 在 styles.xml 文件中定义一个透明主题:
```xml
<style name="TransparentTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
```
3. 在布局文件中添加一个与 statusBar 高度相同的 View:
```xml
<View
android:id="@+id/status_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/status_bar_height"
android:background="@android:color/transparent" />
```
其中,@dimen/status_bar_height 是一个定义了 statusBar 高度的 dimen。
4. 在 MainActivity 中获取 statusBar 的高度,并将布局文件中的 View 的高度设置为 statusBar 的高度:
```java
// 获取 statusBar 高度
int statusBarHeight = getResources().getDimensionPixelSize(
getResources().getIdentifier("status_bar_height", "dimen", "android"));
// 设置 statusBar 高度
View statusBar = findViewById(R.id.status_bar);
ViewGroup.LayoutParams params = statusBar.getLayoutParams();
params.height = statusBarHeight;
statusBar.setLayoutParams(params);
```
这样就可以实现全屏显示 statusBar,且 statusBar 完全透明显示在 app 前面的效果。
阅读全文