android 更改特定片段中状态栏的颜色

6ioyuze2  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(151)

在我的Android应用程序中,有一个MainActivity和许多片段。在HomeFragment我需要有一个紫色的状态栏,但在其他白色。App有

style name="AppStyle" parent="Theme.MaterialComponents.Light.NoActionBar"

对于我使用的MainActivity

<style name="Theme.ActivityStatusBarPurple" parent="AppStyle">
    <item name="android:statusBarColor">@color/color_purple</item>
</style>

在HomeFragment的onCreateView中,我使用

requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

在HomeFragment的onDestroyView中,我使用

requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

我得到了部分理想的结果:状态栏有紫色,但有两个副作用:我的布局重叠导航栏在底部和紫色的颜色是可见的其他片段状态栏。
如何只重叠状态栏而不改变导航栏,以及如何为其他片段状态栏保持白色?

eimct9ow

eimct9ow1#

我找到了一个非常简单的解决办法。在每个片段的onCreateView中,我设置了这行:

requireActivity().window.statusBarColor = ContextCompat.getColor(requireActivity(), R.color.my_color)

无需更改主题

相关问题