无法使用材质组件库设置按钮的背景颜色

Nic*_*ico 5 android android-styles material-design material-components material-components-android

我的代码:

<Button
     android:id="@+id/button_one"
     style="@style/ButtonStyle"
     android:text="@string/button_one" />
Run Code Online (Sandbox Code Playgroud)
<style name="ButtonStyle">
     <item name="android:textSize">32sp</item>
     <item name="android:textColor">@drawable/background_button_text_color</item>
     <item name="android:background">@drawable/background_button</item
</style>
Run Code Online (Sandbox Code Playgroud)

背景按钮.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" android:state_pressed="true" />
    <item android:drawable="@android:color/transparent" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

背景_按钮_文本_颜色.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/black" android:state_pressed="true" />
    <item android:color="@android:color/white" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

当按下按钮时,我得到的是黑色背景而不是白色。不确定我做错了什么。有什么帮助吗?
我正在1.2.0-alpha06使用并使用Theme.MaterialComponents.DayNight.NoActionBar.

V.Y*_*.Y. 8

要解决此问题,请执行以下操作之一:

  • 添加app:backgroundTint="@null"到 xml 或以编程方式 - btn.setBackgroundTintMode(null);
  • 将主题更改Theme.MaterialComponents.DayNight.NoActionBarTheme.MaterialComponents.DayNight.NoActionBar.Bridge

两种解决方案都工作正常参考


Rob*_*bin 7

遇到了同样的问题,设置app:backgroundTint="@null"对我有用。请在此处查看完整的解决方案:https://github.com/material-components/material-components-android/issues/889#issuecomment-621194246


小智 6

将其添加到按钮视图中

app:backgroundTint="@null"
Run Code Online (Sandbox Code Playgroud)


Kas*_*mir 4

你的风格:

<style name="ButtonStyle" parent="Widget.MaterialComponents.Button.TextButton">
    <item name="android:textSize">32sp</item>
    <item name="android:textColor">@color/text_color</item>
    <item name="android:backgroundTint">@color/background_button</item>
    <item name="rippleColor">@android:color/transparent</item>
    <item name="cornerRadius">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

您的选择器应该位于 color 文件夹中

背景按钮:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:color="@android:color/white" android:state_pressed="true" />
   <item android:color="@android:color/transparent" android:state_pressed="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

文字颜色:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:color="@android:color/black" android:state_pressed="true" />
   <item android:color="@android:color/white" android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

并添加到您的按钮:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

颜色是我的