WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS 无效 AOSP 如何修改 navigationBarView 设置了图片
时间: 2024-03-19 14:45:08 浏览: 154
windowManager.LayoutParams
要修改 AOSP 中的 `WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS` 失效问题,并在 `navigationBarView` 中设置图片,可以按照以下步骤进行:
1. 打开 `frameworks/base/core/res/res/values/styles.xml` 文件,找到 `Theme.Material.Light` 主题的定义,复制一份命名为 `Theme.Material.Light.NoTranslucent`。
2. 在新的主题中移除 `android:windowTranslucentStatus` 属性,保留其他属性。
3. 打开 `frameworks/base/core/res/res/values/themes.xml` 文件,找到 `Theme.Material.Light.DarkActionBar` 主题的定义,复制一份命名为 `Theme.Material.Light.DarkActionBar.NoTranslucent`。
4. 在新的主题中移除 `android:windowTranslucentStatus` 属性,保留其他属性。
5. 打开 `frameworks/base/core/java/android/view/WindowManagerGlobal.java` 文件,找到 `applyCompatConfiguration` 方法。
6. 在方法中找到 `params.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;` 这行代码,将其修改为 `params.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;`。
7. 打开 `frameworks/base/core/res/res/layout/navigation_bar.xml` 文件,在其中添加需要设置的图片。
```
<ImageView
android:id="@+id/navigation_bar_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:src="@drawable/navigation_bar_icon" />
```
8. 重新编译 AOSP 并刷入设备即可。
注意:以上修改可能会影响到其他应用的行为,需谨慎操作。同时,需要确保设置的图片大小和导航栏大小相同。
阅读全文