我试图使我的 BottomSheetDialogFragment 和底部导航颜色为相同的颜色。设置导航栏的颜色效果很好,因为我将其设置为白色,但按钮的颜色仍然是白色,如图所示。这就是我的风格:
<style name="AppBottomSheetDialogTheme" parent="Theme.Design.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowTranslucentStatus">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
</style>
<style name="AppModalStyle" parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/ic_dialog_background</item>
<item name="behavior_peekHeight">300dp</item>
</style>
theme.xml
<style name="Theme.MyApp" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="android:colorPrimary">#ffffff</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:actionBarSize">0dp</item>
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:navigationBarColor">@color/screen_background_color</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
</style>
活动主要:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val nightModeFlags: Int = resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK
when (nightModeFlags) {
Configuration.UI_MODE_NIGHT_YES -> {
}
Configuration.UI_MODE_NIGHT_NO -> {
val decorView = window.decorView
decorView.systemUiVisibility = FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS or
SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
Configuration.UI_MODE_NIGHT_UNDEFINED -> {
}
}
}
window?.navigationBarColor = resources.getColor(com.imediavan.common.R.color.screen_background_color)
window?.statusBarColor = resources.getColor(com.imediavan.common.R.color.screen_background_color)
属性 android:windowLightStatusBar 在 Activity 上运行良好,但对于对话框则不然。
我认为你想构建带有圆角的底部工作表对话框,在显示底部工作表后,这个问题会像这样发生在你的底部工作表周围。
1 - 像这样在 theme.xml 中构建样式
<style name="CustomShapeAppearanceBottomSheetDialog" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSizeTopRight">16dp</item>
<item name="cornerSizeTopLeft">16dp</item>
<item name="cornerSizeBottomRight">0dp</item>
<item name="cornerSizeBottomLeft">0dp</item>
</style>
2 - 在 theme.xml 中构建另一种样式,如下所示
<style name="CustomBottomSheet" parent="Widget.MaterialComponents.BottomSheet">
<item name="shapeAppearanceOverlay">@style/CustomShapeAppearanceBottomSheetDialog</item>
</style>
3 - 构建另一种风格,就像这个一样
<style name="CustomBottomSheetDialog" parent="@style/ThemeOverlay.MaterialComponents.BottomSheetDialog">
<item name="bottomSheetStyle">@style/CustomBottomSheet</item>
</style>
4 - 作为最后一步,将此行添加到 theme.xml 中的基本应用程序主题中
<item name="bottomSheetDialogTheme">@style/CustomBottomSheetDialog</item>
100%为我工作:))))))
我也遇到同样的问题,请问你找到解决办法了吗?