【问题标题】:Android MaterialAlertDialog without extending Theme.MaterialComponent没有扩展 Theme.MaterialComponent 的 Android MaterialAlertDialog
【发布时间】:2020-09-02 04:39:37
【问题描述】:

我正在从 'Theme.AppCompat.Light.NoActionBar' 扩展,我不想将我的 AppTheme 切换到 MaterialDesign

MaterialAlertDialogBuilder(context, R.style.MaterialDialog)
            .setCancelable(false)
            .setMessage(message)
            .setPositiveButton("OK") { dialog, _ -> dialog.dismiss() }
            .show()
<style name="MaterialDialog" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="colorSurface">#ffffff</item>
    </style>

预期

结果:

【问题讨论】:

    标签: android material-design android-alertdialog material-components-android material-components


    【解决方案1】:

    如果您无法转到 Material Components 主题,您应该使用 Bridge theme。比如:

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar.Bridge">
        <item name="colorSurface">#ffffff</item>
        ...
    </style>
    

    然后在您的代码中使用:

    MaterialAlertDialogBuilder(context)
       .setCancelable(false)
       ...
    

    如果您只想覆盖对话框的颜色,请使用:

    MaterialAlertDialogBuilder(context,R.style.MaterialDialog)
       .setCancelable(false)
       ...
    

    与:

      <style name="MaterialDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
        <item name="materialThemeOverlay">@style/AlertDialogOverlay</item>
      </style>  
    
    
      <style name="AlertDialogOverlay">
        <item name="colorOnSurface">@color/....</item>
        <item name="colorSurface">#ffffff</item>
        <item name="colorPrimary">@color/.....</item>
        ....
      </style>
    

    【讨论】:

    • 嗨,我们可以将边距设置为MaterialDialog吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多