Android “材质”按钮中定义的样式与AppTheme不兼容

Android “材质”按钮中定义的样式与AppTheme不兼容,android,material-design,android-button,material-components-android,material-components,Android,Material Design,Android Button,Material Components Android,Material Components,我根据新的材质指南更改了Apptheme属性,因为我在所有项目中使用的“我的材质”按钮丢失了它们的主题颜色 我尝试过通过将默认设置作为其父项并使其更改主颜色和次颜色来创建自定义样式 按钮的XML文件 <com.google.android.material.button.MaterialButton android:id="@+id/bs_create_business" style="@style/Widget.MaterialComponents.Button.Outl

我根据新的材质指南更改了Apptheme属性,因为我在所有项目中使用的“我的材质”按钮丢失了它们的主题颜色

我尝试过通过将默认设置作为其父项并使其更改主颜色和次颜色来创建自定义样式

按钮的XML文件

<com.google.android.material.button.MaterialButton
    android:id="@+id/bs_create_business"
    style="@style/Widget.MaterialComponents.Button.OutlinedButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="left|center_vertical"
    android:text="@string/create_business"
    android:textAllCaps="true"
    app:backgroundTint="@color/browser_actions_bg_grey" />

styles.xml

    <style name="AppTheme"parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="colorPrimary">@color/foopprimary_500</item>
        <item name="colorPrimaryDark">@color/foopprimary_900</item>
        <item name="colorAccent">@color/foopsecondary_500</item>
        <itemname="android:windowBackground">@android:color/white</item>
        <item name="fontFamily">@string/default_font</item>

        <item name="colorSecondary">@color/foopsecondary_500</item>
        <item name="colorOnSecondary">@color/foopprimary_500</item>
    </style>

@颜色/食品许可证500
@颜色/食品许可证900
@颜色/食品二级标准500
@android:彩色/白色
@字符串/默认字体
@颜色/食品二级标准500
@颜色/食品许可证500
我的输出如下:

要更改
小部件.MaterialComponents.Button.OutlineButton
样式中的颜色,只需使用lke:

  <style name="MyButton" parent="Widget.MaterialComponents.Button.OutlinedButton" >
    <!-- Border color -->
    <item name="strokeColor">@color/stroke_color_selector</item>
    <!-- Text color -->
    <item name="android:textColor">@color/text_color_selector</item>
    <!-- Background color -->
    <item name="backgroundTint">@color/text_btn_bg_color_selector</item>
  </style>

@颜色/笔划\u颜色\u选择器
@颜色/文本\u颜色\u选择器
@颜色/文本\u btn\u bg\u颜色\u选择器

选择器的默认值为:

StrokeColor:

  <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="?attr/colorPrimary" android:state_checked="true"/>
    <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_checked="false"/>
  </selector>

文本颜色:

  <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="1.00" android:color="?attr/colorPrimary" android:state_checkable="true" android:state_checked="true" android:state_enabled="true"/>
    <item android:alpha="0.60" android:color="?attr/colorOnSurface" android:state_checkable="true" android:state_checked="false" android:state_enabled="true"/>
    <item android:alpha="1.00" android:color="?attr/colorPrimary" android:state_enabled="true"/>
    <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
  </selector>

背景:

  <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="0.08" android:color="?attr/colorPrimary" android:state_checked="true"/>
    <item android:color="@android:color/transparent" android:state_checked="false"/>
  </selector>


@SumitShukla我已经迁移到Androidxy,您正在使用app:backgroundTint=“@color/browser\u actions\u bg\u grey”设置背景色。预期的结果是什么?@GabrieleMariotti在删除背景色调时,我得到了轮廓按钮,但没有笔划颜色和文本(因为它不会显示在白色背景上)。@kunalmanocha对此问题不确定。检查下面的答案(评论太长。如果无法解决问题,我将更新或删除它)。有一些默认值可以与您的颜色一起检查。@SumitShukla非常感谢您的时间,但没有work@kunalmanocha您使用的是哪个版本的材质组件库?并尝试使用单一颜色(仅用于测试)而不是选择器。按钮被禁用了吗?它工作了!非常感谢你。但根据材料指南,材料按钮应选择coolorprimary作为背景,coloronprimary作为文本颜色,但在应用程序主题中更改这些内容时,我没有得到结果。@kunalmanocha您还可以检查可能是指填充的按钮(样式小部件.材料组件.按钮),非常感谢您抽出时间!你救了我。