AOSP statusBar 透明 不好使
时间: 2023-08-08 08:08:14 浏览: 154
如果添加了以上的代码,但是 AOSP 的 statusBar 仍然不透明,那么可能是因为你的设备不支持透明状态栏。在旧版本的 Android 系统上,透明状态栏需要一些额外的配置才能实现。如果你的设备是 Android 4.4 及以下版本,你需要在代码中添加以下配置:
```
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
```
这个代码需要在 Activity 的 onCreate 方法中调用。如果你的设备是 Android 5.0 及以上版本,你需要在 styles.xml 文件中添加以下属性:
```
<item name="android:windowTranslucentStatus">true</item>
```
如果你的设备仍然不支持透明状态栏,你可以考虑使用第三方库来实现这个功能,例如 SystemBarTint 或者 StatusBarUtil。
相关问题
AOSP statusBar 透明 不好使 源码怎么改
如果以上方法都不行,那么可以通过修改 AOSP 源代码来实现状态栏透明的功能。下面是具体的修改步骤:
1. 打开 AOSP 源代码,在 frameworks/base/core/res/res/values/styles.xml 文件中添加以下属性:
```
<item name="android:windowTranslucentStatus">true</item>
```
2. 找到 frameworks/base/core/java/com/android/internal/policy/impl/PhoneWindowManager.java 文件,添加以下代码:
```
WindowManager.LayoutParams attrs = win.getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
win.setAttributes(attrs);
```
这个代码需要添加到以下方法中:
```
public void addSplashScreen(View view, int color) {
//...
}
```
3. 编译 AOSP,刷入你的设备。
这样就可以实现状态栏透明的功能了。需要注意的是,修改 AOSP 源代码需要一定的技术水平,并且可能会带来一些风险,建议谨慎操作。
AOSP statusBar 透明
要让 AOSP 的 statusBar 透明,可以在 AndroidManifest.xml 文件中的 `<application>` 标签中添加以下属性:
```
android:theme="@android:style/Theme.NoTitleBar.Translucent"
```
然后在 res/values/styles.xml 文件中定义一个主题,例如:
```
<style name="MyTheme" parent="@android:style/Theme.NoTitleBar.Translucent">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
```
最后在 AndroidManifest.xml 文件中的 `<application>` 标签中指定这个主题:
```
android:theme="@style/MyTheme"
```
这样就可以让 AOSP 的 statusBar 透明了。
阅读全文