更改“应用程序”的主题后,“材料组件”主题对话框按钮变得浮肿

时间:2018-09-12 10:28:33

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

今天,我正在尝试安装新的材料组件,这是您需要更改应用程序的父级以从Theme.MaterialComponents继承。 我之所以这样做,是因为我想使用底部导航更好的波纹。但是之后,几乎所有应用程序中的按钮都变得更加膨松。

我应该怎么做才能恢复到先前的状态(右图)?

On left is a material version on right is appcompat version 左侧是材料版本,右侧是appcompat版本

4 个答案:

答案 0 :(得分:5)

在研究过程中,我找到了答案,我会把它留在这里,也许会对某人有所帮助。

之所以认为它们是因为它们使用了style="attr/buttonBarNegativeButtonStyle",而Material主题覆盖了它们

要解决此问题,您需要使用Bridge主题而不是Theme.MaterialComponents.Light

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.Bridge">
    <!-- ... -->
</style>

更多信息: https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#bridge-themes

答案 1 :(得分:2)

在这里查看我的答案:https://stackoverflow.com/a/54416793/2342163

<style name="Theme.Custom.Material.Alert.Dialog.Light" parent="Theme.MaterialComponents.Light.Dialog.Alert">
    <item name="materialButtonStyle">@style/Widget.AppCompat.Button.Borderless</item>
</style>

<style name="Theme.Custom.Material.Base.Light" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="android:dialogTheme">@style/Theme.Custom.Material.Alert.Dialog.Light</item>
    <item name="android:alertDialogTheme">@style/Theme.Custom.Material.Alert.Dialog.Light</item>
  ....
</style>

答案 2 :(得分:1)

另一种方法是使用AndroidX AppCompat库中的AlertDialog

AlertDialog signInDialog = new AlertDialog.Builder(this)
    .setMessage("Are you sure you want to log out?")
    .setPositiveButton("OK", (dialogInterface, i) -> {
        // TODO: Add your code here
    })
    .setNegativeButton("Cancel", (dialogInterface, i) -> {
        // TODO: Add your code here
    })
signInDialog.show();

答案 3 :(得分:0)

Solution

停止使用android.app.AlertDialog并替换为androidx.appcompat.app.AlertDialog,它将解决您的问题

You can use

    <style name="AppTheme" parent="@style/Theme.MaterialComponents.Light.Bridge">
    </style>

    or

    <style name="AppTheme" parent="@style/Theme.MaterialComponents.Light.NoActionBar.Bridge">
    </style>       

但是当您使用诸如ExtendedFloatingActionButtonMaterialButton之类的物质成分时,会引起您