gpt4 book ai didi

android - 带有皮肤的 BottomSheetDialogFragment 主题

转载 作者:行者123 更新时间:2023-12-03 10:11:28 27 4
gpt4 key购买 nike

如何组合BottomSheetDialogFragment主题与其他主题?

我的应用程序具有使用主题制作的皮肤。 BottomSheetDialogFragment应该有圆角,我使用以下方法实现:

 override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.CustomBottomSheetDialogTheme) /* hack to make background transparent */
}

然后在 styles.xml :
<style name="CustomBottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@android:color/transparent</item>
</style>

<style name="CustomBottomSheetDialogTheme" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/CustomBottomSheetStyle</item>
</style>

但是如果我从 Theme.MaterialComponents.Light.BottomSheetDialog 扩展我没有得到我在皮肤主题中定义的配色方案。

那么问题来了:如何在皮肤主题中定义Dialog主题?

最佳答案

您可以添加在您的应用主题中 bottomSheetDialogTheme 属性在您的应用程序中全局设置 bottomsheetDialog 样式。

<style name="AppTheme" parent="Theme.MaterialComponents.*">
......
<item name="bottomSheetDialogTheme">@style/BottomSheetDialog_Rounded</item>
</style>

<style name="BottomSheetDialog_Rounded" parent="@style/ThemeOverlay.MaterialComponents.BottomSheetDialog">
<item name="bottomSheetStyle">@style/BottomSheet_Rounded</item>
</style>

否则,在您的 BottomSheetDialogFragment 中,您可以覆盖 getTheme() 方法。
public class RoundedBottomSheetDialog extends BottomSheetDialogFragment {

//....

@Override public int getTheme() {
return R.style.BottomSheetDialog_Rounded;
}
}

另外要获得圆角,您可以使用以下内容:
  <!-- BottomSheet Dialog-->
<style name="BottomSheetDialog_Rounded" parent="@style/ThemeOverlay.MaterialComponents.BottomSheetDialog">
<item name="bottomSheetStyle">@style/BottomSheet_Rounded</item>
</style>

<style name="BottomSheet_Rounded" parent="Widget.MaterialComponents.BottomSheet">
<item name="shapeAppearanceOverlay">@style/ShapeAppearanceBottomSheetDialog_Rounded</item>
</style>

<style name="ShapeAppearanceBottomSheetDialog_Rounded" 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>

关于android - 带有皮肤的 BottomSheetDialogFragment 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com