【问题标题】:How to use Android DialogFragment setStyle()如何使用 Android DialogFragment setStyle()
【发布时间】:2011-06-22 07:31:49
【问题描述】:

我正在尝试将 setStyle 设置为扩展 dialogFragment 的自定义对话框, 构造函数看起来像:

MyCustomDialog() {
  super();
  setStyle(STYLE_NO_FRAME, 0);
}

我仍然可以看到布局周围的框架。

有人有什么想法吗?

【问题讨论】:

    标签: android android-fragments dialog android-3.0-honeycomb


    【解决方案1】:

    尝试在 onCreate(...) 中调用而不是在构造函数中调用。

    【讨论】:

    • @Hoochwo 看看 API 演示中的 FragmentDialog(Support).java,它可以满足您的需求。
    • 我对其进行了测试,在我的情况下,它只能在构造函数中调用样式。公共 BaseDialogFragment() { setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_AlertDialog); }
    【解决方案2】:

    根据DialogFragment documentation中的setStyle()描述:

    在创建片段的对话框后调用它不会 效果

    【讨论】:

    • 非常感谢,它可以在构造函数中调用而不是 createview 或 viewcreated
    【解决方案3】:

    在我看来,最好覆盖主题 getter

    override fun getTheme(): Int {
        return R.style.BottomSheetDialogTheme
    }
    

    【讨论】:

    • 干得好那个人!使用 android 5.0 时,我只得到了一个不需要的操作栏标题。在 Android 8 和 9 上这不是问题(没有尝试其他版本)。此解决方案解决了我所有测试版本中不需要的标题栏的问题。
    【解决方案4】:

    尝试将此添加到 DialogFragment 中的 onCreate 方法中:

    setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Material_Dialog_MinWidth);
    

    【讨论】:

      【解决方案5】:

      如果你想为你的对话框设置一个自定义主题,你可以这样做......

      AlertDialog.Builder(context, R.style.MyDialogTheme) ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        相关资源
        最近更新 更多