使用 Material Components 库无法设置按钮的背景颜色

5

我的代码:

<Button
     android:id="@+id/button_one"
     style="@style/ButtonStyle"
     android:text="@string/button_one" />

<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>

background_button.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>

background_button_text_color.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>

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


似乎是他们的问题。等待新版本。您可以在 Google 上提出问题。 - IntelliJ Amiya
1
是的,其中一位贡献者建议已经修复了,但我仍然无法让它正常工作。https://github.com/material-components/material-components-android/issues/889#issuecomment-607281980 - nicoqueijo
1
尝试使用app:backgroundTint属性和带有checked state的选择器,并使用样式style="@style/Widget.MaterialComponents.Button.TextButton" - Gabriele Mariotti
4个回答

8
为了解决这个问题,有以下两种方法可供选择:
  • 在xml或编程中添加app:backgroundTint="@null",或者使用 btn.setBackgroundTintMode(null);
  • 将主题从Theme.MaterialComponents.DayNight.NoActionBar修改为Theme.MaterialComponents.DayNight.NoActionBar.Bridge
这两种方法都可以很好地解决该问题。参考:链接

1
桥接器对我帮助很大。谢谢! - MoOx
1
它对我的项目完美地起作用了。谢谢。 - Thiengo

7

6
将此内容添加到按钮视图中。
app:backgroundTint="@null"

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>

你的选择器应该在颜色文件夹中。
背景按钮:
<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>

文字颜色:

<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>

并将以下内容添加到您的按钮中:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
在这里输入图片描述 在这里输入图片描述
这些颜色是我自己设的。

这对我不起作用。你是否使用了MaterialComponents主题? - nicoqueijo
是的,我正在使用“Theme.MaterialComponents.Light.DarkActionBar”。 - Kasım Özdemir
我正在使用Theme.MaterialComponents.DayNight.NoActionBar主题。您能告诉我是否可以在该主题下工作吗? - nicoqueijo
我使用了Theme.MaterialComponents.DayNight.NoActionBar更改了我的主题,目前仍然正常工作。 - Kasım Özdemir
1
你可以尝试这个 => <style name="ButtonStyle" parent="Widget.MaterialComponents.Button.TextButton"> - Kasım Özdemir
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接