首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带皮肤的BottomSheetDialogFragment主题

带皮肤的BottomSheetDialogFragment主题
EN

Stack Overflow用户
提问于 2019-04-26 18:37:47
回答 3查看 3.7K关注 0票数 4

如何将BottomSheetDialogFragment主题与其他主题相结合?

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

代码语言:javascript
复制
 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.CustomBottomSheetDialogTheme) /* hack to make background transparent */
 }

然后在styles.xml

代码语言:javascript
复制
<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扩展,我得不到我在皮肤主题中定义的配色方案。

所以问题是:如何在皮肤主题中定义对话主题?

EN

回答 3

Stack Overflow用户

发布于 2019-09-26 06:12:00

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

代码语言:javascript
复制
<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()方法。

代码语言:javascript
复制
public class RoundedBottomSheetDialog extends BottomSheetDialogFragment {

  //....

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

此外,要获得圆角,您可以使用以下命令:

代码语言:javascript
复制
  <!-- 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>
票数 5
EN

Stack Overflow用户

发布于 2019-09-23 20:15:50

试试这个吧

kotlin

代码语言:javascript
复制
override fun getTheme(): Int = R.style.CustomBottomSheetDialogTheme

java

代码语言:javascript
复制
@Override
public int getTheme() {
     return R.style.CustomBottomSheetDialogTheme
}
票数 1
EN

Stack Overflow用户

发布于 2019-05-29 15:04:50

代码语言:javascript
复制
override fun onCreateDialog(@Nullable savedInstanceState: Bundle?): Dialog 
val dialog = BottomSheetDialog(context!!,R.style.FullScreenBottomSheet)

<style name="FullScreenBottomSheet" 
parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="android:windowFullscreen">false</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:statusBarColor">@color/transparent</item>
</style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55865830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档